[{"data":1,"prerenderedAt":5775},["ShallowReactive",2],{"docs-nav":3,"doc-latest\u002Fpackages\u002Fwpzylos-security\u002Fusage":691,"docs-prevnext-flat":5456},[4,27,51,653,663,670,683],{"title":5,"order":6,"key":7,"items":8,"packages":26},"Getting Started",1,"getting-started",[9,11,15,19,23],{"path":10,"title":5,"order":6},"\u002Fdocs\u002Flatest\u002Fgetting-started",{"path":12,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Finstallation","Installation",3,{"path":16,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Fconfiguration","Configuration",4,{"path":20,"title":21,"order":22},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Fquick-start","Quick Start",50,{"path":24,"title":25,"order":22},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Ftutorial","Tutorial: Build a Notes Plugin",{},{"title":28,"order":29,"key":30,"items":31,"packages":50},"Core Concepts",2,"concepts",[32,35,38,41,44,47],{"path":33,"title":34,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Farchitecture","Architecture Overview",{"path":36,"title":37,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fhooks","Hook System",{"path":39,"title":40,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fplugin-context","Plugin Context",{"path":42,"title":43,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Flifecycle","Request Lifecycle",{"path":45,"title":46,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcontainer","Service Container",{"path":48,"title":49,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fservice-providers","Service Providers",{},{"title":52,"order":14,"key":53,"items":54,"packages":55},"Packages","packages",[],{"wpzylos-assets":56,"wpzylos-cli-core":91,"wpzylos-cli-devtool":114,"wpzylos-config":136,"wpzylos-container":158,"wpzylos-core":180,"wpzylos-database":202,"wpzylos-events":224,"wpzylos-hooks":246,"wpzylos-http":269,"wpzylos-i18n":291,"wpzylos-logger":313,"wpzylos-mail":335,"wpzylos-mcp":357,"wpzylos-migrations":376,"wpzylos-model":398,"wpzylos-notification":420,"wpzylos-queue":442,"wpzylos-requirements":464,"wpzylos-routing":486,"wpzylos-scaffold":514,"wpzylos-scheduler":545,"wpzylos-security":567,"wpzylos-validation":587,"wpzylos-views":609,"wpzylos-wp-cli":631},[57,60,63,65,67,71,75,79,83,87],{"path":58,"title":59,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets","WPZylos Assets",{"path":61,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Foverview","Overview",{"path":64,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Finstallation",{"path":66,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fconfiguration",{"path":68,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fusage","Usage",5,{"path":72,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fapi-reference","API Reference",6,{"path":76,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fexamples","Examples",7,{"path":80,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Ftesting","Testing",8,{"path":84,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fsecurity","Security",9,{"path":88,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Ftroubleshooting","Troubleshooting",10,[92,95,97,99,101,103,105,107,109,112],{"path":93,"title":94,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core","WPZylos CLI Core Documentation",{"path":96,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Foverview",{"path":98,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Finstallation",{"path":100,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fconfiguration",{"path":102,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fusage",{"path":104,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fapi-reference",{"path":106,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fexamples",{"path":108,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Ftesting",{"path":110,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fsecurity","Security Notes",{"path":113,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Ftroubleshooting",[115,118,120,122,124,126,128,130,132,134],{"path":116,"title":117,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool","WPZylos CLI Devtool Documentation",{"path":119,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Foverview",{"path":121,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Finstallation",{"path":123,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fconfiguration",{"path":125,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fusage",{"path":127,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fapi-reference",{"path":129,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fexamples",{"path":131,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Ftesting",{"path":133,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fsecurity",{"path":135,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Ftroubleshooting",[137,140,142,144,146,148,150,152,154,156],{"path":138,"title":139,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config","WPZylos Config",{"path":141,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Foverview",{"path":143,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Finstallation",{"path":145,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fconfiguration",{"path":147,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fusage",{"path":149,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fapi-reference",{"path":151,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fexamples",{"path":153,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Ftesting",{"path":155,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fsecurity",{"path":157,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Ftroubleshooting",[159,162,164,166,168,170,172,174,176,178],{"path":160,"title":161,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container","WPZylos Container",{"path":163,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Foverview",{"path":165,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Finstallation",{"path":167,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fconfiguration",{"path":169,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fusage",{"path":171,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fapi-reference",{"path":173,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fexamples",{"path":175,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Ftesting",{"path":177,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fsecurity",{"path":179,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Ftroubleshooting",[181,184,186,188,190,192,194,196,198,200],{"path":182,"title":183,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core","WPZylos Core",{"path":185,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Foverview",{"path":187,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Finstallation",{"path":189,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fconfiguration",{"path":191,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fusage",{"path":193,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fapi-reference",{"path":195,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fexamples",{"path":197,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Ftesting",{"path":199,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fsecurity",{"path":201,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Ftroubleshooting",[203,206,208,210,212,214,216,218,220,222],{"path":204,"title":205,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database","WPZylos Database",{"path":207,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Foverview",{"path":209,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Finstallation",{"path":211,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fconfiguration",{"path":213,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fusage",{"path":215,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fapi-reference",{"path":217,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fexamples",{"path":219,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Ftesting",{"path":221,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fsecurity",{"path":223,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Ftroubleshooting",[225,228,230,232,234,236,238,240,242,244],{"path":226,"title":227,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events","WPZylos Events",{"path":229,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Foverview",{"path":231,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Finstallation",{"path":233,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fconfiguration",{"path":235,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fusage",{"path":237,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fapi-reference",{"path":239,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fexamples",{"path":241,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Ftesting",{"path":243,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fsecurity",{"path":245,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Ftroubleshooting",[247,250,252,254,256,259,261,263,265,267],{"path":248,"title":249,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks","WPZylos Hooks",{"path":251,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Foverview",{"path":253,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Finstallation",{"path":255,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fconfiguration",{"path":257,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fusage","Usage Guide",{"path":260,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fapi-reference",{"path":262,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fexamples",{"path":264,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Ftesting",{"path":266,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fsecurity",{"path":268,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Ftroubleshooting",[270,273,275,277,279,281,283,285,287,289],{"path":271,"title":272,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http","WPZylos HTTP",{"path":274,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Foverview",{"path":276,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Finstallation",{"path":278,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fconfiguration",{"path":280,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fusage",{"path":282,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fapi-reference",{"path":284,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fexamples",{"path":286,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Ftesting",{"path":288,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fsecurity",{"path":290,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Ftroubleshooting",[292,295,297,299,301,303,305,307,309,311],{"path":293,"title":294,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n","WPZylos I18n",{"path":296,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Foverview",{"path":298,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Finstallation",{"path":300,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fconfiguration",{"path":302,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fusage",{"path":304,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fapi-reference",{"path":306,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fexamples",{"path":308,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Ftesting",{"path":310,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fsecurity",{"path":312,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Ftroubleshooting",[314,317,319,321,323,325,327,329,331,333],{"path":315,"title":316,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger","WPZylos Logger",{"path":318,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Foverview",{"path":320,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Finstallation",{"path":322,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fconfiguration",{"path":324,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fusage",{"path":326,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fapi-reference",{"path":328,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fexamples",{"path":330,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Ftesting",{"path":332,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fsecurity",{"path":334,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Ftroubleshooting",[336,339,341,343,345,347,349,351,353,355],{"path":337,"title":338,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail","WPZylos Mail",{"path":340,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Foverview",{"path":342,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Finstallation",{"path":344,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fconfiguration",{"path":346,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fusage",{"path":348,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fapi-reference",{"path":350,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fexamples",{"path":352,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Ftesting",{"path":354,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fsecurity",{"path":356,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Ftroubleshooting",[358,361,363,365,367,369,371,373],{"path":359,"title":360,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp","WPZylos MCP",{"path":362,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Foverview",{"path":364,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Finstallation",{"path":366,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fusage",{"path":368,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fapi-reference",{"path":370,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fexamples",{"path":372,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Ftroubleshooting",{"path":374,"title":375,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fcompanion-mcps","MCP Setup Guide",[377,380,382,384,386,388,390,392,394,396],{"path":378,"title":379,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations","WPZylos Migrations",{"path":381,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Foverview",{"path":383,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Finstallation",{"path":385,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fconfiguration",{"path":387,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fusage",{"path":389,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fapi-reference",{"path":391,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fexamples",{"path":393,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Ftesting",{"path":395,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fsecurity",{"path":397,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Ftroubleshooting",[399,402,404,406,408,410,412,414,416,418],{"path":400,"title":401,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model","WPZylos Model",{"path":403,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Foverview",{"path":405,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Finstallation",{"path":407,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fconfiguration",{"path":409,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fusage",{"path":411,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fapi-reference",{"path":413,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fexamples",{"path":415,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Ftesting",{"path":417,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fsecurity",{"path":419,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Ftroubleshooting",[421,424,426,428,430,432,434,436,438,440],{"path":422,"title":423,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification","WPZylos Notification",{"path":425,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Foverview",{"path":427,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Finstallation",{"path":429,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fconfiguration",{"path":431,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fusage",{"path":433,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fapi-reference",{"path":435,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fexamples",{"path":437,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Ftesting",{"path":439,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fsecurity",{"path":441,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Ftroubleshooting",[443,446,448,450,452,454,456,458,460,462],{"path":444,"title":445,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue","WPZylos Queue",{"path":447,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Foverview",{"path":449,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Finstallation",{"path":451,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fconfiguration",{"path":453,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fusage",{"path":455,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fapi-reference",{"path":457,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fexamples",{"path":459,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Ftesting",{"path":461,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fsecurity",{"path":463,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Ftroubleshooting",[465,468,470,472,474,476,478,480,482,484],{"path":466,"title":467,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements","WPZylos Requirements",{"path":469,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Foverview",{"path":471,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Finstallation",{"path":473,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fconfiguration",{"path":475,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fusage",{"path":477,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fapi-reference",{"path":479,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fexamples",{"path":481,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Ftesting",{"path":483,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fsecurity",{"path":485,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Ftroubleshooting",[487,490,492,494,496,498,500,502,504,506,508,511],{"path":488,"title":489,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing","WPZylos Routing",{"path":491,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Foverview",{"path":493,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Finstallation",{"path":495,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fconfiguration",{"path":497,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fusage",{"path":499,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fapi-reference",{"path":501,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fexamples",{"path":503,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Ftesting",{"path":505,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fsecurity",{"path":507,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Ftroubleshooting",{"path":509,"title":510,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fajax","AJAX Routing",{"path":512,"title":513,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Frest-api","REST API Routing",[515,518,520,522,524,526,528,530,532,535,537,539,542],{"path":516,"title":517,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold","WPZylos Scaffold Documentation",{"path":519,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Foverview",{"path":521,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Finstallation",{"path":523,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fconfiguration",{"path":525,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fusage",{"path":527,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fapi-reference",{"path":529,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fexamples",{"path":531,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftesting",{"path":533,"title":534,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fui","UI Components (DaisyUI)",{"path":536,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fsecurity",{"path":538,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftroubleshooting",{"path":540,"title":541,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fcli-reference","Scaffold CLI Reference",{"path":543,"title":544,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fwalkthrough","Scaffold Walkthrough",[546,549,551,553,555,557,559,561,563,565],{"path":547,"title":548,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler","WPZylos Scheduler",{"path":550,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Foverview",{"path":552,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Finstallation",{"path":554,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fconfiguration",{"path":556,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fusage",{"path":558,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fapi-reference",{"path":560,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fexamples",{"path":562,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Ftesting",{"path":564,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fsecurity",{"path":566,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Ftroubleshooting",[568,571,573,575,577,579,581,583,585],{"path":569,"title":570,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security","WPZylos Security",{"path":572,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Foverview",{"path":574,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Finstallation",{"path":576,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fconfiguration",{"path":578,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fusage",{"path":580,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fapi-reference",{"path":582,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fexamples",{"path":584,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Ftesting",{"path":586,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Ftroubleshooting",[588,591,593,595,597,599,601,603,605,607],{"path":589,"title":590,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation","WPZylos Validation",{"path":592,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Foverview",{"path":594,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Finstallation",{"path":596,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fconfiguration",{"path":598,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fusage",{"path":600,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fapi-reference",{"path":602,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fexamples",{"path":604,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Ftesting",{"path":606,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fsecurity",{"path":608,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Ftroubleshooting",[610,613,615,617,619,621,623,625,627,629],{"path":611,"title":612,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views","WPZylos Views",{"path":614,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Foverview",{"path":616,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Finstallation",{"path":618,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fconfiguration",{"path":620,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fusage",{"path":622,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fapi-reference",{"path":624,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fexamples",{"path":626,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Ftesting",{"path":628,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fsecurity",{"path":630,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Ftroubleshooting",[632,635,637,639,641,643,645,647,649,651],{"path":633,"title":634,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli","WPZylos WP-CLI",{"path":636,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Foverview",{"path":638,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Finstallation",{"path":640,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fconfiguration",{"path":642,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fusage",{"path":644,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fapi-reference",{"path":646,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fexamples",{"path":648,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Ftesting",{"path":650,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fsecurity",{"path":652,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Ftroubleshooting",{"title":654,"order":18,"key":655,"items":656,"packages":662},"Scaffold","scaffold",[657,660],{"path":658,"title":659,"order":6},"\u002Fdocs\u002Flatest\u002Fscaffold","Scaffold Guide",{"path":661,"title":544,"order":22},"\u002Fdocs\u002Flatest\u002Fscaffold\u002Fwalkthrough",{},{"title":85,"order":70,"key":664,"items":665,"packages":669},"security",[666],{"path":667,"title":668,"order":29},"\u002Fdocs\u002Flatest\u002Fsecurity\u002Foverview","Security Overview",{},{"title":81,"order":74,"key":671,"items":672,"packages":682},"testing",[673,676,679],{"path":674,"title":675,"order":29},"\u002Fdocs\u002Flatest\u002Ftesting\u002Foverview","Testing Overview",{"path":677,"title":678,"order":22},"\u002Fdocs\u002Flatest\u002Ftesting\u002Fintegration-tests","Integration Testing",{"path":680,"title":681,"order":22},"\u002Fdocs\u002Flatest\u002Ftesting\u002Funit-tests","Unit Testing",{},{"title":684,"order":78,"key":685,"items":686,"packages":690},"Distribution","distribution",[687],{"path":688,"title":689,"order":29},"\u002Fdocs\u002Flatest\u002Fdistribution\u002Foverview","Distribution Guide",{},{"id":692,"title":258,"body":693,"description":5450,"extension":5451,"meta":5452,"navigation":803,"order":70,"package":707,"path":578,"seo":5453,"stem":5454,"__hash__":5455},"content\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fusage.md",{"type":694,"value":695,"toc":5396},"minimark",[696,700,709,723,726,731,738,1043,1045,1049,1055,1060,1163,1167,1327,1371,1375,1448,1452,1535,1537,1541,1546,1550,1692,1696,1894,1898,1991,1995,2090,2094,2150,2154,2265,2267,2271,2276,2280,2583,2587,2681,2685,2778,2782,2867,2874,3059,3061,3065,3070,3074,3234,3238,3380,3388,3559,3563,3653,3657,3749,3751,3755,3760,3764,3920,3924,4060,4064,4172,4176,4259,4263,4365,4369,4431,4435,4554,4660,4662,4666,4670,4677,4842,4846,4853,4998,5000,5004,5007,5011,5066,5070,5122,5126,5194,5198,5236,5240,5325,5329,5377,5392],[697,698,258],"h1",{"id":699},"usage-guide",[701,702,703,704,708],"p",{},"This guide covers all security services provided by the ",[705,706,707],"code",{},"wpzylos-security"," package with practical examples.",[710,711,712],"blockquote",{},[701,713,714,718,719,722],{},[715,716,717],"strong",{},"Important:"," All services use instance-based API resolved from the container. Do ",[715,720,721],{},"not"," use static calls.",[724,725],"hr",{},[727,728,730],"h2",{"id":729},"resolving-services","Resolving Services",[701,732,733,734,737],{},"All services are registered by ",[705,735,736],{},"SecurityServiceProvider"," as singletons. Resolve them from the application container:",[739,740,745],"pre",{"className":741,"code":742,"language":743,"meta":744,"style":744},"language-php shiki shiki-themes github-light github-dark","use WPZylos\\Framework\\Security\\Nonce;\nuse WPZylos\\Framework\\Security\\Gate;\nuse WPZylos\\Framework\\Security\\Sanitizer;\nuse WPZylos\\Framework\\Security\\RateLimiter;\nuse WPZylos\\Framework\\Security\\UploadSecurity;\n\n\u002F\u002F By class name\n$nonce     = $app->make(Nonce::class);\n$gate      = $app->make(Gate::class);\n$sanitizer = $app->make(Sanitizer::class);\n$limiter   = $app->make(RateLimiter::class);\n$upload    = $app->make(UploadSecurity::class);\n\n\u002F\u002F Or by string alias\n$nonce     = $app->make('nonce');\n$gate      = $app->make('gate');\n$sanitizer = $app->make('sanitizer');\n$limiter   = $app->make('rate-limiter');\n$upload    = $app->make('upload-security');\n","php","",[705,746,747,763,772,781,790,799,805,811,841,863,885,908,931,936,942,963,983,1003,1023],{"__ignoreMap":744},[748,749,751,755,759],"span",{"class":750,"line":6},"line",[748,752,754],{"class":753},"szBVR","use",[748,756,758],{"class":757},"sj4cs"," WPZylos\\Framework\\Security\\Nonce",[748,760,762],{"class":761},"sVt8B",";\n",[748,764,765,767,770],{"class":750,"line":29},[748,766,754],{"class":753},[748,768,769],{"class":757}," WPZylos\\Framework\\Security\\Gate",[748,771,762],{"class":761},[748,773,774,776,779],{"class":750,"line":14},[748,775,754],{"class":753},[748,777,778],{"class":757}," WPZylos\\Framework\\Security\\Sanitizer",[748,780,762],{"class":761},[748,782,783,785,788],{"class":750,"line":18},[748,784,754],{"class":753},[748,786,787],{"class":757}," WPZylos\\Framework\\Security\\RateLimiter",[748,789,762],{"class":761},[748,791,792,794,797],{"class":750,"line":70},[748,793,754],{"class":753},[748,795,796],{"class":757}," WPZylos\\Framework\\Security\\UploadSecurity",[748,798,762],{"class":761},[748,800,801],{"class":750,"line":74},[748,802,804],{"emptyLinePlaceholder":803},true,"\n",[748,806,807],{"class":750,"line":78},[748,808,810],{"class":809},"sJ8bj","\u002F\u002F By class name\n",[748,812,813,816,819,822,825,829,832,835,838],{"class":750,"line":82},[748,814,815],{"class":761},"$nonce     ",[748,817,818],{"class":753},"=",[748,820,821],{"class":761}," $app",[748,823,824],{"class":753},"->",[748,826,828],{"class":827},"sScJk","make",[748,830,831],{"class":761},"(",[748,833,834],{"class":757},"Nonce",[748,836,837],{"class":753},"::class",[748,839,840],{"class":761},");\n",[748,842,843,846,848,850,852,854,856,859,861],{"class":750,"line":86},[748,844,845],{"class":761},"$gate      ",[748,847,818],{"class":753},[748,849,821],{"class":761},[748,851,824],{"class":753},[748,853,828],{"class":827},[748,855,831],{"class":761},[748,857,858],{"class":757},"Gate",[748,860,837],{"class":753},[748,862,840],{"class":761},[748,864,865,868,870,872,874,876,878,881,883],{"class":750,"line":90},[748,866,867],{"class":761},"$sanitizer ",[748,869,818],{"class":753},[748,871,821],{"class":761},[748,873,824],{"class":753},[748,875,828],{"class":827},[748,877,831],{"class":761},[748,879,880],{"class":757},"Sanitizer",[748,882,837],{"class":753},[748,884,840],{"class":761},[748,886,888,891,893,895,897,899,901,904,906],{"class":750,"line":887},11,[748,889,890],{"class":761},"$limiter   ",[748,892,818],{"class":753},[748,894,821],{"class":761},[748,896,824],{"class":753},[748,898,828],{"class":827},[748,900,831],{"class":761},[748,902,903],{"class":757},"RateLimiter",[748,905,837],{"class":753},[748,907,840],{"class":761},[748,909,911,914,916,918,920,922,924,927,929],{"class":750,"line":910},12,[748,912,913],{"class":761},"$upload    ",[748,915,818],{"class":753},[748,917,821],{"class":761},[748,919,824],{"class":753},[748,921,828],{"class":827},[748,923,831],{"class":761},[748,925,926],{"class":757},"UploadSecurity",[748,928,837],{"class":753},[748,930,840],{"class":761},[748,932,934],{"class":750,"line":933},13,[748,935,804],{"emptyLinePlaceholder":803},[748,937,939],{"class":750,"line":938},14,[748,940,941],{"class":809},"\u002F\u002F Or by string alias\n",[748,943,945,947,949,951,953,955,957,961],{"class":750,"line":944},15,[748,946,815],{"class":761},[748,948,818],{"class":753},[748,950,821],{"class":761},[748,952,824],{"class":753},[748,954,828],{"class":827},[748,956,831],{"class":761},[748,958,960],{"class":959},"sZZnC","'nonce'",[748,962,840],{"class":761},[748,964,966,968,970,972,974,976,978,981],{"class":750,"line":965},16,[748,967,845],{"class":761},[748,969,818],{"class":753},[748,971,821],{"class":761},[748,973,824],{"class":753},[748,975,828],{"class":827},[748,977,831],{"class":761},[748,979,980],{"class":959},"'gate'",[748,982,840],{"class":761},[748,984,986,988,990,992,994,996,998,1001],{"class":750,"line":985},17,[748,987,867],{"class":761},[748,989,818],{"class":753},[748,991,821],{"class":761},[748,993,824],{"class":753},[748,995,828],{"class":827},[748,997,831],{"class":761},[748,999,1000],{"class":959},"'sanitizer'",[748,1002,840],{"class":761},[748,1004,1006,1008,1010,1012,1014,1016,1018,1021],{"class":750,"line":1005},18,[748,1007,890],{"class":761},[748,1009,818],{"class":753},[748,1011,821],{"class":761},[748,1013,824],{"class":753},[748,1015,828],{"class":827},[748,1017,831],{"class":761},[748,1019,1020],{"class":959},"'rate-limiter'",[748,1022,840],{"class":761},[748,1024,1026,1028,1030,1032,1034,1036,1038,1041],{"class":750,"line":1025},19,[748,1027,913],{"class":761},[748,1029,818],{"class":753},[748,1031,821],{"class":761},[748,1033,824],{"class":753},[748,1035,828],{"class":827},[748,1037,831],{"class":761},[748,1039,1040],{"class":959},"'upload-security'",[748,1042,840],{"class":761},[724,1044],{},[727,1046,1048],{"id":1047},"nonce-management","Nonce Management",[701,1050,1051,1052,1054],{},"The ",[705,1053,834],{}," class wraps WordPress nonce functions with automatic plugin-scoped action prefixing.",[1056,1057,1059],"h3",{"id":1058},"creating-and-verifying-nonces","Creating and Verifying Nonces",[739,1061,1063],{"className":741,"code":1062,"language":743,"meta":744,"style":744},"$nonce = $app->make(Nonce::class);\n\n\u002F\u002F Create a nonce token\n$token = $nonce->create('save_settings');\n\n\u002F\u002F Verify a nonce\nif ($nonce->verify($_POST['_wpnonce'], 'save_settings')) {\n    \u002F\u002F Nonce is valid — proceed\n}\n",[705,1064,1065,1086,1090,1095,1117,1121,1126,1153,1158],{"__ignoreMap":744},[748,1066,1067,1070,1072,1074,1076,1078,1080,1082,1084],{"class":750,"line":6},[748,1068,1069],{"class":761},"$nonce ",[748,1071,818],{"class":753},[748,1073,821],{"class":761},[748,1075,824],{"class":753},[748,1077,828],{"class":827},[748,1079,831],{"class":761},[748,1081,834],{"class":757},[748,1083,837],{"class":753},[748,1085,840],{"class":761},[748,1087,1088],{"class":750,"line":29},[748,1089,804],{"emptyLinePlaceholder":803},[748,1091,1092],{"class":750,"line":14},[748,1093,1094],{"class":809},"\u002F\u002F Create a nonce token\n",[748,1096,1097,1100,1102,1105,1107,1110,1112,1115],{"class":750,"line":18},[748,1098,1099],{"class":761},"$token ",[748,1101,818],{"class":753},[748,1103,1104],{"class":761}," $nonce",[748,1106,824],{"class":753},[748,1108,1109],{"class":827},"create",[748,1111,831],{"class":761},[748,1113,1114],{"class":959},"'save_settings'",[748,1116,840],{"class":761},[748,1118,1119],{"class":750,"line":70},[748,1120,804],{"emptyLinePlaceholder":803},[748,1122,1123],{"class":750,"line":74},[748,1124,1125],{"class":809},"\u002F\u002F Verify a nonce\n",[748,1127,1128,1131,1134,1136,1139,1142,1145,1148,1150],{"class":750,"line":78},[748,1129,1130],{"class":753},"if",[748,1132,1133],{"class":761}," ($nonce",[748,1135,824],{"class":753},[748,1137,1138],{"class":827},"verify",[748,1140,1141],{"class":761},"($_POST[",[748,1143,1144],{"class":959},"'_wpnonce'",[748,1146,1147],{"class":761},"], ",[748,1149,1114],{"class":959},[748,1151,1152],{"class":761},")) {\n",[748,1154,1155],{"class":750,"line":82},[748,1156,1157],{"class":809},"    \u002F\u002F Nonce is valid — proceed\n",[748,1159,1160],{"class":750,"line":86},[748,1161,1162],{"class":761},"}\n",[1056,1164,1166],{"id":1165},"form-protection","Form Protection",[739,1168,1170],{"className":741,"code":1169,"language":743,"meta":744,"style":744},"\u002F\u002F In your form template\n\u003Cform method=\"post\" action=\"\u003C?php echo admin_url('admin-post.php'); ?>\">\n    \u003C?php\n    $nonce = $app->make(Nonce::class);\n    $nonce->field('save_settings'); \u002F\u002F echoes hidden input + referer\n    ?>\n    \u003Cinput type=\"hidden\" name=\"action\" value=\"my_plugin_save\">\n    \u003Cbutton type=\"submit\">Save\u003C\u002Fbutton>\n\u003C\u002Fform>\n",[705,1171,1172,1177,1204,1212,1233,1253,1258,1292,1319],{"__ignoreMap":744},[748,1173,1174],{"class":750,"line":6},[748,1175,1176],{"class":809},"\u002F\u002F In your form template\n",[748,1178,1179,1182,1185,1188,1190,1193,1196,1198,1201],{"class":750,"line":29},[748,1180,1181],{"class":753},"\u003C",[748,1183,1184],{"class":757},"form",[748,1186,1187],{"class":757}," method",[748,1189,818],{"class":753},[748,1191,1192],{"class":959},"\"post\"",[748,1194,1195],{"class":757}," action",[748,1197,818],{"class":753},[748,1199,1200],{"class":959},"\"\u003C?php echo admin_url('admin-post.php'); ?>\"",[748,1202,1203],{"class":753},">\n",[748,1205,1206,1209],{"class":750,"line":14},[748,1207,1208],{"class":753},"    \u003C?",[748,1210,1211],{"class":757},"php\n",[748,1213,1214,1217,1219,1221,1223,1225,1227,1229,1231],{"class":750,"line":18},[748,1215,1216],{"class":761},"    $nonce ",[748,1218,818],{"class":753},[748,1220,821],{"class":761},[748,1222,824],{"class":753},[748,1224,828],{"class":827},[748,1226,831],{"class":761},[748,1228,834],{"class":757},[748,1230,837],{"class":753},[748,1232,840],{"class":761},[748,1234,1235,1238,1240,1243,1245,1247,1250],{"class":750,"line":70},[748,1236,1237],{"class":761},"    $nonce",[748,1239,824],{"class":753},[748,1241,1242],{"class":827},"field",[748,1244,831],{"class":761},[748,1246,1114],{"class":959},[748,1248,1249],{"class":761},"); ",[748,1251,1252],{"class":809},"\u002F\u002F echoes hidden input + referer\n",[748,1254,1255],{"class":750,"line":74},[748,1256,1257],{"class":753},"    ?>\n",[748,1259,1260,1263,1266,1269,1271,1274,1277,1279,1282,1285,1287,1290],{"class":750,"line":78},[748,1261,1262],{"class":753},"    \u003C",[748,1264,1265],{"class":757},"input",[748,1267,1268],{"class":757}," type",[748,1270,818],{"class":753},[748,1272,1273],{"class":959},"\"hidden\"",[748,1275,1276],{"class":757}," name",[748,1278,818],{"class":753},[748,1280,1281],{"class":959},"\"action\"",[748,1283,1284],{"class":757}," value",[748,1286,818],{"class":753},[748,1288,1289],{"class":959},"\"my_plugin_save\"",[748,1291,1203],{"class":753},[748,1293,1294,1296,1299,1301,1303,1306,1309,1312,1315,1317],{"class":750,"line":82},[748,1295,1262],{"class":753},[748,1297,1298],{"class":757},"button",[748,1300,1268],{"class":757},[748,1302,818],{"class":753},[748,1304,1305],{"class":959},"\"submit\"",[748,1307,1308],{"class":753},">",[748,1310,1311],{"class":757},"Save",[748,1313,1314],{"class":753},"\u003C\u002F",[748,1316,1298],{"class":757},[748,1318,1203],{"class":753},[748,1320,1321,1323,1325],{"class":750,"line":86},[748,1322,1314],{"class":753},[748,1324,1184],{"class":757},[748,1326,1203],{"class":753},[739,1328,1330],{"className":741,"code":1329,"language":743,"meta":744,"style":744},"\u002F\u002F Non-echoing usage (e.g., in a variable)\n$fieldHtml = $nonce->field('save_settings', '_wpnonce', true, false);\n",[705,1331,1332,1337],{"__ignoreMap":744},[748,1333,1334],{"class":750,"line":6},[748,1335,1336],{"class":809},"\u002F\u002F Non-echoing usage (e.g., in a variable)\n",[748,1338,1339,1342,1344,1346,1348,1350,1352,1354,1357,1359,1361,1364,1366,1369],{"class":750,"line":29},[748,1340,1341],{"class":761},"$fieldHtml ",[748,1343,818],{"class":753},[748,1345,1104],{"class":761},[748,1347,824],{"class":753},[748,1349,1242],{"class":827},[748,1351,831],{"class":761},[748,1353,1114],{"class":959},[748,1355,1356],{"class":761},", ",[748,1358,1144],{"class":959},[748,1360,1356],{"class":761},[748,1362,1363],{"class":757},"true",[748,1365,1356],{"class":761},[748,1367,1368],{"class":757},"false",[748,1370,840],{"class":761},[1056,1372,1374],{"id":1373},"url-nonce","URL Nonce",[739,1376,1378],{"className":741,"code":1377,"language":743,"meta":744,"style":744},"$nonce = $app->make(Nonce::class);\n\n$deleteUrl = $nonce->url(\n    admin_url('admin.php?action=delete&id=42'),\n    'delete_item'\n);\n\u002F\u002F Result: admin.php?action=delete&id=42&_wpnonce=abc123\n",[705,1379,1380,1400,1404,1421,1434,1439,1443],{"__ignoreMap":744},[748,1381,1382,1384,1386,1388,1390,1392,1394,1396,1398],{"class":750,"line":6},[748,1383,1069],{"class":761},[748,1385,818],{"class":753},[748,1387,821],{"class":761},[748,1389,824],{"class":753},[748,1391,828],{"class":827},[748,1393,831],{"class":761},[748,1395,834],{"class":757},[748,1397,837],{"class":753},[748,1399,840],{"class":761},[748,1401,1402],{"class":750,"line":29},[748,1403,804],{"emptyLinePlaceholder":803},[748,1405,1406,1409,1411,1413,1415,1418],{"class":750,"line":14},[748,1407,1408],{"class":761},"$deleteUrl ",[748,1410,818],{"class":753},[748,1412,1104],{"class":761},[748,1414,824],{"class":753},[748,1416,1417],{"class":827},"url",[748,1419,1420],{"class":761},"(\n",[748,1422,1423,1426,1428,1431],{"class":750,"line":18},[748,1424,1425],{"class":827},"    admin_url",[748,1427,831],{"class":761},[748,1429,1430],{"class":959},"'admin.php?action=delete&id=42'",[748,1432,1433],{"class":761},"),\n",[748,1435,1436],{"class":750,"line":70},[748,1437,1438],{"class":959},"    'delete_item'\n",[748,1440,1441],{"class":750,"line":74},[748,1442,840],{"class":761},[748,1444,1445],{"class":750,"line":78},[748,1446,1447],{"class":809},"\u002F\u002F Result: admin.php?action=delete&id=42&_wpnonce=abc123\n",[1056,1449,1451],{"id":1450},"admin-ajax-referer-checks","Admin & AJAX Referer Checks",[739,1453,1455],{"className":741,"code":1454,"language":743,"meta":744,"style":744},"$nonce = $app->make(Nonce::class);\n\n\u002F\u002F Admin page form processing\n$nonce->checkAdminReferer('save_settings');\n\n\u002F\u002F AJAX handler\n$nonce->checkAjaxReferer('ajax_action', '_wpnonce', true);\n",[705,1456,1457,1477,1481,1486,1502,1506,1511],{"__ignoreMap":744},[748,1458,1459,1461,1463,1465,1467,1469,1471,1473,1475],{"class":750,"line":6},[748,1460,1069],{"class":761},[748,1462,818],{"class":753},[748,1464,821],{"class":761},[748,1466,824],{"class":753},[748,1468,828],{"class":827},[748,1470,831],{"class":761},[748,1472,834],{"class":757},[748,1474,837],{"class":753},[748,1476,840],{"class":761},[748,1478,1479],{"class":750,"line":29},[748,1480,804],{"emptyLinePlaceholder":803},[748,1482,1483],{"class":750,"line":14},[748,1484,1485],{"class":809},"\u002F\u002F Admin page form processing\n",[748,1487,1488,1491,1493,1496,1498,1500],{"class":750,"line":18},[748,1489,1490],{"class":761},"$nonce",[748,1492,824],{"class":753},[748,1494,1495],{"class":827},"checkAdminReferer",[748,1497,831],{"class":761},[748,1499,1114],{"class":959},[748,1501,840],{"class":761},[748,1503,1504],{"class":750,"line":70},[748,1505,804],{"emptyLinePlaceholder":803},[748,1507,1508],{"class":750,"line":74},[748,1509,1510],{"class":809},"\u002F\u002F AJAX handler\n",[748,1512,1513,1515,1517,1520,1522,1525,1527,1529,1531,1533],{"class":750,"line":78},[748,1514,1490],{"class":761},[748,1516,824],{"class":753},[748,1518,1519],{"class":827},"checkAjaxReferer",[748,1521,831],{"class":761},[748,1523,1524],{"class":959},"'ajax_action'",[748,1526,1356],{"class":761},[748,1528,1144],{"class":959},[748,1530,1356],{"class":761},[748,1532,1363],{"class":757},[748,1534,840],{"class":761},[724,1536],{},[727,1538,1540],{"id":1539},"authorization-gate","Authorization Gate",[701,1542,1051,1543,1545],{},[705,1544,858],{}," class provides a fluent API for checking WordPress user capabilities.",[1056,1547,1549],{"id":1548},"basic-capability-checks","Basic Capability Checks",[739,1551,1553],{"className":741,"code":1552,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\n\u002F\u002F Check a single capability\nif ($gate->can('edit_posts')) {\n    \u002F\u002F Current user can edit posts\n}\n\n\u002F\u002F Inverse check\nif ($gate->cannot('manage_options')) {\n    wp_die('Admin access required.');\n}\n\n\u002F\u002F Check capability for a specific post\nif ($gate->can('edit_post', $postId)) {\n    \u002F\u002F Can edit this specific post\n}\n",[705,1554,1555,1576,1580,1585,1604,1609,1613,1617,1622,1640,1652,1656,1660,1665,1683,1688],{"__ignoreMap":744},[748,1556,1557,1560,1562,1564,1566,1568,1570,1572,1574],{"class":750,"line":6},[748,1558,1559],{"class":761},"$gate ",[748,1561,818],{"class":753},[748,1563,821],{"class":761},[748,1565,824],{"class":753},[748,1567,828],{"class":827},[748,1569,831],{"class":761},[748,1571,858],{"class":757},[748,1573,837],{"class":753},[748,1575,840],{"class":761},[748,1577,1578],{"class":750,"line":29},[748,1579,804],{"emptyLinePlaceholder":803},[748,1581,1582],{"class":750,"line":14},[748,1583,1584],{"class":809},"\u002F\u002F Check a single capability\n",[748,1586,1587,1589,1592,1594,1597,1599,1602],{"class":750,"line":18},[748,1588,1130],{"class":753},[748,1590,1591],{"class":761}," ($gate",[748,1593,824],{"class":753},[748,1595,1596],{"class":827},"can",[748,1598,831],{"class":761},[748,1600,1601],{"class":959},"'edit_posts'",[748,1603,1152],{"class":761},[748,1605,1606],{"class":750,"line":70},[748,1607,1608],{"class":809},"    \u002F\u002F Current user can edit posts\n",[748,1610,1611],{"class":750,"line":74},[748,1612,1162],{"class":761},[748,1614,1615],{"class":750,"line":78},[748,1616,804],{"emptyLinePlaceholder":803},[748,1618,1619],{"class":750,"line":82},[748,1620,1621],{"class":809},"\u002F\u002F Inverse check\n",[748,1623,1624,1626,1628,1630,1633,1635,1638],{"class":750,"line":86},[748,1625,1130],{"class":753},[748,1627,1591],{"class":761},[748,1629,824],{"class":753},[748,1631,1632],{"class":827},"cannot",[748,1634,831],{"class":761},[748,1636,1637],{"class":959},"'manage_options'",[748,1639,1152],{"class":761},[748,1641,1642,1645,1647,1650],{"class":750,"line":90},[748,1643,1644],{"class":827},"    wp_die",[748,1646,831],{"class":761},[748,1648,1649],{"class":959},"'Admin access required.'",[748,1651,840],{"class":761},[748,1653,1654],{"class":750,"line":887},[748,1655,1162],{"class":761},[748,1657,1658],{"class":750,"line":910},[748,1659,804],{"emptyLinePlaceholder":803},[748,1661,1662],{"class":750,"line":933},[748,1663,1664],{"class":809},"\u002F\u002F Check capability for a specific post\n",[748,1666,1667,1669,1671,1673,1675,1677,1680],{"class":750,"line":938},[748,1668,1130],{"class":753},[748,1670,1591],{"class":761},[748,1672,824],{"class":753},[748,1674,1596],{"class":827},[748,1676,831],{"class":761},[748,1678,1679],{"class":959},"'edit_post'",[748,1681,1682],{"class":761},", $postId)) {\n",[748,1684,1685],{"class":750,"line":944},[748,1686,1687],{"class":809},"    \u002F\u002F Can edit this specific post\n",[748,1689,1690],{"class":750,"line":965},[748,1691,1162],{"class":761},[1056,1693,1695],{"id":1694},"convenience-methods","Convenience Methods",[739,1697,1699],{"className":741,"code":1698,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\nif ($gate->isAdmin()) {\n    \u002F\u002F User has manage_options\n}\n\nif ($gate->canManagePlugin()) {\n    \u002F\u002F Same as isAdmin() by default\n}\n\n\u002F\u002F Override the required capability\nif ($gate->canManagePlugin('edit_others_posts')) {\n    \u002F\u002F Editors and above\n}\n\nif ($gate->canEdit()) {\n    \u002F\u002F User has edit_posts\n}\n\nif ($gate->canPublish()) {\n    \u002F\u002F User has publish_posts\n}\n\nif ($gate->canDelete()) {\n    \u002F\u002F User has delete_posts\n}\n",[705,1700,1701,1721,1725,1739,1744,1748,1752,1765,1770,1774,1778,1783,1800,1805,1809,1813,1826,1831,1835,1839,1853,1859,1864,1869,1883,1889],{"__ignoreMap":744},[748,1702,1703,1705,1707,1709,1711,1713,1715,1717,1719],{"class":750,"line":6},[748,1704,1559],{"class":761},[748,1706,818],{"class":753},[748,1708,821],{"class":761},[748,1710,824],{"class":753},[748,1712,828],{"class":827},[748,1714,831],{"class":761},[748,1716,858],{"class":757},[748,1718,837],{"class":753},[748,1720,840],{"class":761},[748,1722,1723],{"class":750,"line":29},[748,1724,804],{"emptyLinePlaceholder":803},[748,1726,1727,1729,1731,1733,1736],{"class":750,"line":14},[748,1728,1130],{"class":753},[748,1730,1591],{"class":761},[748,1732,824],{"class":753},[748,1734,1735],{"class":827},"isAdmin",[748,1737,1738],{"class":761},"()) {\n",[748,1740,1741],{"class":750,"line":18},[748,1742,1743],{"class":809},"    \u002F\u002F User has manage_options\n",[748,1745,1746],{"class":750,"line":70},[748,1747,1162],{"class":761},[748,1749,1750],{"class":750,"line":74},[748,1751,804],{"emptyLinePlaceholder":803},[748,1753,1754,1756,1758,1760,1763],{"class":750,"line":78},[748,1755,1130],{"class":753},[748,1757,1591],{"class":761},[748,1759,824],{"class":753},[748,1761,1762],{"class":827},"canManagePlugin",[748,1764,1738],{"class":761},[748,1766,1767],{"class":750,"line":82},[748,1768,1769],{"class":809},"    \u002F\u002F Same as isAdmin() by default\n",[748,1771,1772],{"class":750,"line":86},[748,1773,1162],{"class":761},[748,1775,1776],{"class":750,"line":90},[748,1777,804],{"emptyLinePlaceholder":803},[748,1779,1780],{"class":750,"line":887},[748,1781,1782],{"class":809},"\u002F\u002F Override the required capability\n",[748,1784,1785,1787,1789,1791,1793,1795,1798],{"class":750,"line":910},[748,1786,1130],{"class":753},[748,1788,1591],{"class":761},[748,1790,824],{"class":753},[748,1792,1762],{"class":827},[748,1794,831],{"class":761},[748,1796,1797],{"class":959},"'edit_others_posts'",[748,1799,1152],{"class":761},[748,1801,1802],{"class":750,"line":933},[748,1803,1804],{"class":809},"    \u002F\u002F Editors and above\n",[748,1806,1807],{"class":750,"line":938},[748,1808,1162],{"class":761},[748,1810,1811],{"class":750,"line":944},[748,1812,804],{"emptyLinePlaceholder":803},[748,1814,1815,1817,1819,1821,1824],{"class":750,"line":965},[748,1816,1130],{"class":753},[748,1818,1591],{"class":761},[748,1820,824],{"class":753},[748,1822,1823],{"class":827},"canEdit",[748,1825,1738],{"class":761},[748,1827,1828],{"class":750,"line":985},[748,1829,1830],{"class":809},"    \u002F\u002F User has edit_posts\n",[748,1832,1833],{"class":750,"line":1005},[748,1834,1162],{"class":761},[748,1836,1837],{"class":750,"line":1025},[748,1838,804],{"emptyLinePlaceholder":803},[748,1840,1842,1844,1846,1848,1851],{"class":750,"line":1841},20,[748,1843,1130],{"class":753},[748,1845,1591],{"class":761},[748,1847,824],{"class":753},[748,1849,1850],{"class":827},"canPublish",[748,1852,1738],{"class":761},[748,1854,1856],{"class":750,"line":1855},21,[748,1857,1858],{"class":809},"    \u002F\u002F User has publish_posts\n",[748,1860,1862],{"class":750,"line":1861},22,[748,1863,1162],{"class":761},[748,1865,1867],{"class":750,"line":1866},23,[748,1868,804],{"emptyLinePlaceholder":803},[748,1870,1872,1874,1876,1878,1881],{"class":750,"line":1871},24,[748,1873,1130],{"class":753},[748,1875,1591],{"class":761},[748,1877,824],{"class":753},[748,1879,1880],{"class":827},"canDelete",[748,1882,1738],{"class":761},[748,1884,1886],{"class":750,"line":1885},25,[748,1887,1888],{"class":809},"    \u002F\u002F User has delete_posts\n",[748,1890,1892],{"class":750,"line":1891},26,[748,1893,1162],{"class":761},[1056,1895,1897],{"id":1896},"authorization-abort-on-failure","Authorization (Abort on Failure)",[739,1899,1901],{"className":741,"code":1900,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\n\u002F\u002F Dies with 403 if user lacks the capability\n$gate->authorize('manage_options');\n\n\u002F\u002F Custom error message\n$gate->authorize(\n    'manage_options',\n    'Only administrators can access this page.',\n    403\n);\n",[705,1902,1903,1923,1927,1932,1948,1952,1957,1967,1975,1982,1987],{"__ignoreMap":744},[748,1904,1905,1907,1909,1911,1913,1915,1917,1919,1921],{"class":750,"line":6},[748,1906,1559],{"class":761},[748,1908,818],{"class":753},[748,1910,821],{"class":761},[748,1912,824],{"class":753},[748,1914,828],{"class":827},[748,1916,831],{"class":761},[748,1918,858],{"class":757},[748,1920,837],{"class":753},[748,1922,840],{"class":761},[748,1924,1925],{"class":750,"line":29},[748,1926,804],{"emptyLinePlaceholder":803},[748,1928,1929],{"class":750,"line":14},[748,1930,1931],{"class":809},"\u002F\u002F Dies with 403 if user lacks the capability\n",[748,1933,1934,1937,1939,1942,1944,1946],{"class":750,"line":18},[748,1935,1936],{"class":761},"$gate",[748,1938,824],{"class":753},[748,1940,1941],{"class":827},"authorize",[748,1943,831],{"class":761},[748,1945,1637],{"class":959},[748,1947,840],{"class":761},[748,1949,1950],{"class":750,"line":70},[748,1951,804],{"emptyLinePlaceholder":803},[748,1953,1954],{"class":750,"line":74},[748,1955,1956],{"class":809},"\u002F\u002F Custom error message\n",[748,1958,1959,1961,1963,1965],{"class":750,"line":78},[748,1960,1936],{"class":761},[748,1962,824],{"class":753},[748,1964,1941],{"class":827},[748,1966,1420],{"class":761},[748,1968,1969,1972],{"class":750,"line":82},[748,1970,1971],{"class":959},"    'manage_options'",[748,1973,1974],{"class":761},",\n",[748,1976,1977,1980],{"class":750,"line":86},[748,1978,1979],{"class":959},"    'Only administrators can access this page.'",[748,1981,1974],{"class":761},[748,1983,1984],{"class":750,"line":90},[748,1985,1986],{"class":757},"    403\n",[748,1988,1989],{"class":750,"line":887},[748,1990,840],{"class":761},[1056,1992,1994],{"id":1993},"user-state","User State",[739,1996,1998],{"className":741,"code":1997,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\nif ($gate->isLoggedIn()) {\n    $id = $gate->userId();\n    \u002F\u002F Logged-in user with ID\n}\n\nif ($gate->isGuest()) {\n    \u002F\u002F Not logged in\n}\n",[705,1999,2000,2020,2024,2037,2055,2060,2064,2068,2081,2086],{"__ignoreMap":744},[748,2001,2002,2004,2006,2008,2010,2012,2014,2016,2018],{"class":750,"line":6},[748,2003,1559],{"class":761},[748,2005,818],{"class":753},[748,2007,821],{"class":761},[748,2009,824],{"class":753},[748,2011,828],{"class":827},[748,2013,831],{"class":761},[748,2015,858],{"class":757},[748,2017,837],{"class":753},[748,2019,840],{"class":761},[748,2021,2022],{"class":750,"line":29},[748,2023,804],{"emptyLinePlaceholder":803},[748,2025,2026,2028,2030,2032,2035],{"class":750,"line":14},[748,2027,1130],{"class":753},[748,2029,1591],{"class":761},[748,2031,824],{"class":753},[748,2033,2034],{"class":827},"isLoggedIn",[748,2036,1738],{"class":761},[748,2038,2039,2042,2044,2047,2049,2052],{"class":750,"line":18},[748,2040,2041],{"class":761},"    $id ",[748,2043,818],{"class":753},[748,2045,2046],{"class":761}," $gate",[748,2048,824],{"class":753},[748,2050,2051],{"class":827},"userId",[748,2053,2054],{"class":761},"();\n",[748,2056,2057],{"class":750,"line":70},[748,2058,2059],{"class":809},"    \u002F\u002F Logged-in user with ID\n",[748,2061,2062],{"class":750,"line":74},[748,2063,1162],{"class":761},[748,2065,2066],{"class":750,"line":78},[748,2067,804],{"emptyLinePlaceholder":803},[748,2069,2070,2072,2074,2076,2079],{"class":750,"line":82},[748,2071,1130],{"class":753},[748,2073,1591],{"class":761},[748,2075,824],{"class":753},[748,2077,2078],{"class":827},"isGuest",[748,2080,1738],{"class":761},[748,2082,2083],{"class":750,"line":86},[748,2084,2085],{"class":809},"    \u002F\u002F Not logged in\n",[748,2087,2088],{"class":750,"line":90},[748,2089,1162],{"class":761},[1056,2091,2093],{"id":2092},"checking-another-user","Checking Another User",[739,2095,2097],{"className":741,"code":2096,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\nif ($gate->userCan($userId, 'edit_posts')) {\n    \u002F\u002F Specific user can edit posts\n}\n",[705,2098,2099,2119,2123,2141,2146],{"__ignoreMap":744},[748,2100,2101,2103,2105,2107,2109,2111,2113,2115,2117],{"class":750,"line":6},[748,2102,1559],{"class":761},[748,2104,818],{"class":753},[748,2106,821],{"class":761},[748,2108,824],{"class":753},[748,2110,828],{"class":827},[748,2112,831],{"class":761},[748,2114,858],{"class":757},[748,2116,837],{"class":753},[748,2118,840],{"class":761},[748,2120,2121],{"class":750,"line":29},[748,2122,804],{"emptyLinePlaceholder":803},[748,2124,2125,2127,2129,2131,2134,2137,2139],{"class":750,"line":14},[748,2126,1130],{"class":753},[748,2128,1591],{"class":761},[748,2130,824],{"class":753},[748,2132,2133],{"class":827},"userCan",[748,2135,2136],{"class":761},"($userId, ",[748,2138,1601],{"class":959},[748,2140,1152],{"class":761},[748,2142,2143],{"class":750,"line":18},[748,2144,2145],{"class":809},"    \u002F\u002F Specific user can edit posts\n",[748,2147,2148],{"class":750,"line":70},[748,2149,1162],{"class":761},[1056,2151,2153],{"id":2152},"multiple-capabilities","Multiple Capabilities",[739,2155,2157],{"className":741,"code":2156,"language":743,"meta":744,"style":744},"$gate = $app->make(Gate::class);\n\n\u002F\u002F User has ANY of these capabilities\nif ($gate->canAny(['edit_posts', 'upload_files'])) {\n    \u002F\u002F At least one matches\n}\n\n\u002F\u002F User has ALL of these capabilities\nif ($gate->canAll(['edit_posts', 'publish_posts', 'upload_files'])) {\n    \u002F\u002F All three are present\n}\n",[705,2158,2159,2179,2183,2188,2212,2217,2221,2225,2230,2256,2261],{"__ignoreMap":744},[748,2160,2161,2163,2165,2167,2169,2171,2173,2175,2177],{"class":750,"line":6},[748,2162,1559],{"class":761},[748,2164,818],{"class":753},[748,2166,821],{"class":761},[748,2168,824],{"class":753},[748,2170,828],{"class":827},[748,2172,831],{"class":761},[748,2174,858],{"class":757},[748,2176,837],{"class":753},[748,2178,840],{"class":761},[748,2180,2181],{"class":750,"line":29},[748,2182,804],{"emptyLinePlaceholder":803},[748,2184,2185],{"class":750,"line":14},[748,2186,2187],{"class":809},"\u002F\u002F User has ANY of these capabilities\n",[748,2189,2190,2192,2194,2196,2199,2202,2204,2206,2209],{"class":750,"line":18},[748,2191,1130],{"class":753},[748,2193,1591],{"class":761},[748,2195,824],{"class":753},[748,2197,2198],{"class":827},"canAny",[748,2200,2201],{"class":761},"([",[748,2203,1601],{"class":959},[748,2205,1356],{"class":761},[748,2207,2208],{"class":959},"'upload_files'",[748,2210,2211],{"class":761},"])) {\n",[748,2213,2214],{"class":750,"line":70},[748,2215,2216],{"class":809},"    \u002F\u002F At least one matches\n",[748,2218,2219],{"class":750,"line":74},[748,2220,1162],{"class":761},[748,2222,2223],{"class":750,"line":78},[748,2224,804],{"emptyLinePlaceholder":803},[748,2226,2227],{"class":750,"line":82},[748,2228,2229],{"class":809},"\u002F\u002F User has ALL of these capabilities\n",[748,2231,2232,2234,2236,2238,2241,2243,2245,2247,2250,2252,2254],{"class":750,"line":86},[748,2233,1130],{"class":753},[748,2235,1591],{"class":761},[748,2237,824],{"class":753},[748,2239,2240],{"class":827},"canAll",[748,2242,2201],{"class":761},[748,2244,1601],{"class":959},[748,2246,1356],{"class":761},[748,2248,2249],{"class":959},"'publish_posts'",[748,2251,1356],{"class":761},[748,2253,2208],{"class":959},[748,2255,2211],{"class":761},[748,2257,2258],{"class":750,"line":90},[748,2259,2260],{"class":809},"    \u002F\u002F All three are present\n",[748,2262,2263],{"class":750,"line":887},[748,2264,1162],{"class":761},[724,2266],{},[727,2268,2270],{"id":2269},"input-sanitization","Input Sanitization",[701,2272,1051,2273,2275],{},[705,2274,880],{}," class provides field-level sanitization using WordPress sanitization functions.",[1056,2277,2279],{"id":2278},"individual-sanitizers","Individual Sanitizers",[739,2281,2283],{"className":741,"code":2282,"language":743,"meta":744,"style":744},"$sanitizer = $app->make(Sanitizer::class);\n\n$title   = $sanitizer->text($_POST['title']);\n$bio     = $sanitizer->textarea($_POST['bio']);\n$content = $sanitizer->html($_POST['content']);\n$email   = $sanitizer->email($_POST['email']);\n$website = $sanitizer->url($_POST['website']);\n$count   = $sanitizer->int($_POST['count']);\n$postId  = $sanitizer->absint($_POST['post_id']);\n$price   = $sanitizer->float($_POST['price']);\n$active  = $sanitizer->bool($_POST['active']);\n$slug    = $sanitizer->slug($_POST['slug']);\n$key     = $sanitizer->key($_POST['option_key']);\n$file    = $sanitizer->filename($_POST['filename']);\n$class   = $sanitizer->htmlClass($_POST['css_class']);\n",[705,2284,2285,2305,2309,2332,2353,2374,2395,2415,2436,2457,2478,2499,2520,2541,2562],{"__ignoreMap":744},[748,2286,2287,2289,2291,2293,2295,2297,2299,2301,2303],{"class":750,"line":6},[748,2288,867],{"class":761},[748,2290,818],{"class":753},[748,2292,821],{"class":761},[748,2294,824],{"class":753},[748,2296,828],{"class":827},[748,2298,831],{"class":761},[748,2300,880],{"class":757},[748,2302,837],{"class":753},[748,2304,840],{"class":761},[748,2306,2307],{"class":750,"line":29},[748,2308,804],{"emptyLinePlaceholder":803},[748,2310,2311,2314,2316,2319,2321,2324,2326,2329],{"class":750,"line":14},[748,2312,2313],{"class":761},"$title   ",[748,2315,818],{"class":753},[748,2317,2318],{"class":761}," $sanitizer",[748,2320,824],{"class":753},[748,2322,2323],{"class":827},"text",[748,2325,1141],{"class":761},[748,2327,2328],{"class":959},"'title'",[748,2330,2331],{"class":761},"]);\n",[748,2333,2334,2337,2339,2341,2343,2346,2348,2351],{"class":750,"line":18},[748,2335,2336],{"class":761},"$bio     ",[748,2338,818],{"class":753},[748,2340,2318],{"class":761},[748,2342,824],{"class":753},[748,2344,2345],{"class":827},"textarea",[748,2347,1141],{"class":761},[748,2349,2350],{"class":959},"'bio'",[748,2352,2331],{"class":761},[748,2354,2355,2358,2360,2362,2364,2367,2369,2372],{"class":750,"line":70},[748,2356,2357],{"class":761},"$content ",[748,2359,818],{"class":753},[748,2361,2318],{"class":761},[748,2363,824],{"class":753},[748,2365,2366],{"class":827},"html",[748,2368,1141],{"class":761},[748,2370,2371],{"class":959},"'content'",[748,2373,2331],{"class":761},[748,2375,2376,2379,2381,2383,2385,2388,2390,2393],{"class":750,"line":74},[748,2377,2378],{"class":761},"$email   ",[748,2380,818],{"class":753},[748,2382,2318],{"class":761},[748,2384,824],{"class":753},[748,2386,2387],{"class":827},"email",[748,2389,1141],{"class":761},[748,2391,2392],{"class":959},"'email'",[748,2394,2331],{"class":761},[748,2396,2397,2400,2402,2404,2406,2408,2410,2413],{"class":750,"line":78},[748,2398,2399],{"class":761},"$website ",[748,2401,818],{"class":753},[748,2403,2318],{"class":761},[748,2405,824],{"class":753},[748,2407,1417],{"class":827},[748,2409,1141],{"class":761},[748,2411,2412],{"class":959},"'website'",[748,2414,2331],{"class":761},[748,2416,2417,2420,2422,2424,2426,2429,2431,2434],{"class":750,"line":82},[748,2418,2419],{"class":761},"$count   ",[748,2421,818],{"class":753},[748,2423,2318],{"class":761},[748,2425,824],{"class":753},[748,2427,2428],{"class":827},"int",[748,2430,1141],{"class":761},[748,2432,2433],{"class":959},"'count'",[748,2435,2331],{"class":761},[748,2437,2438,2441,2443,2445,2447,2450,2452,2455],{"class":750,"line":86},[748,2439,2440],{"class":761},"$postId  ",[748,2442,818],{"class":753},[748,2444,2318],{"class":761},[748,2446,824],{"class":753},[748,2448,2449],{"class":827},"absint",[748,2451,1141],{"class":761},[748,2453,2454],{"class":959},"'post_id'",[748,2456,2331],{"class":761},[748,2458,2459,2462,2464,2466,2468,2471,2473,2476],{"class":750,"line":90},[748,2460,2461],{"class":761},"$price   ",[748,2463,818],{"class":753},[748,2465,2318],{"class":761},[748,2467,824],{"class":753},[748,2469,2470],{"class":827},"float",[748,2472,1141],{"class":761},[748,2474,2475],{"class":959},"'price'",[748,2477,2331],{"class":761},[748,2479,2480,2483,2485,2487,2489,2492,2494,2497],{"class":750,"line":887},[748,2481,2482],{"class":761},"$active  ",[748,2484,818],{"class":753},[748,2486,2318],{"class":761},[748,2488,824],{"class":753},[748,2490,2491],{"class":827},"bool",[748,2493,1141],{"class":761},[748,2495,2496],{"class":959},"'active'",[748,2498,2331],{"class":761},[748,2500,2501,2504,2506,2508,2510,2513,2515,2518],{"class":750,"line":910},[748,2502,2503],{"class":761},"$slug    ",[748,2505,818],{"class":753},[748,2507,2318],{"class":761},[748,2509,824],{"class":753},[748,2511,2512],{"class":827},"slug",[748,2514,1141],{"class":761},[748,2516,2517],{"class":959},"'slug'",[748,2519,2331],{"class":761},[748,2521,2522,2525,2527,2529,2531,2534,2536,2539],{"class":750,"line":933},[748,2523,2524],{"class":761},"$key     ",[748,2526,818],{"class":753},[748,2528,2318],{"class":761},[748,2530,824],{"class":753},[748,2532,2533],{"class":827},"key",[748,2535,1141],{"class":761},[748,2537,2538],{"class":959},"'option_key'",[748,2540,2331],{"class":761},[748,2542,2543,2546,2548,2550,2552,2555,2557,2560],{"class":750,"line":938},[748,2544,2545],{"class":761},"$file    ",[748,2547,818],{"class":753},[748,2549,2318],{"class":761},[748,2551,824],{"class":753},[748,2553,2554],{"class":827},"filename",[748,2556,1141],{"class":761},[748,2558,2559],{"class":959},"'filename'",[748,2561,2331],{"class":761},[748,2563,2564,2567,2569,2571,2573,2576,2578,2581],{"class":750,"line":944},[748,2565,2566],{"class":761},"$class   ",[748,2568,818],{"class":753},[748,2570,2318],{"class":761},[748,2572,824],{"class":753},[748,2574,2575],{"class":827},"htmlClass",[748,2577,1141],{"class":761},[748,2579,2580],{"class":959},"'css_class'",[748,2582,2331],{"class":761},[1056,2584,2586],{"id":2585},"url-with-custom-protocols","URL with Custom Protocols",[739,2588,2590],{"className":741,"code":2589,"language":743,"meta":744,"style":744},"$sanitizer = $app->make(Sanitizer::class);\n\n\u002F\u002F Default: http, https\n$url = $sanitizer->url($input);\n\n\u002F\u002F Allow additional protocols\n$url = $sanitizer->url($input, ['http', 'https', 'ftp', 'mailto']);\n",[705,2591,2592,2612,2616,2621,2637,2641,2646],{"__ignoreMap":744},[748,2593,2594,2596,2598,2600,2602,2604,2606,2608,2610],{"class":750,"line":6},[748,2595,867],{"class":761},[748,2597,818],{"class":753},[748,2599,821],{"class":761},[748,2601,824],{"class":753},[748,2603,828],{"class":827},[748,2605,831],{"class":761},[748,2607,880],{"class":757},[748,2609,837],{"class":753},[748,2611,840],{"class":761},[748,2613,2614],{"class":750,"line":29},[748,2615,804],{"emptyLinePlaceholder":803},[748,2617,2618],{"class":750,"line":14},[748,2619,2620],{"class":809},"\u002F\u002F Default: http, https\n",[748,2622,2623,2626,2628,2630,2632,2634],{"class":750,"line":18},[748,2624,2625],{"class":761},"$url ",[748,2627,818],{"class":753},[748,2629,2318],{"class":761},[748,2631,824],{"class":753},[748,2633,1417],{"class":827},[748,2635,2636],{"class":761},"($input);\n",[748,2638,2639],{"class":750,"line":70},[748,2640,804],{"emptyLinePlaceholder":803},[748,2642,2643],{"class":750,"line":74},[748,2644,2645],{"class":809},"\u002F\u002F Allow additional protocols\n",[748,2647,2648,2650,2652,2654,2656,2658,2661,2664,2666,2669,2671,2674,2676,2679],{"class":750,"line":78},[748,2649,2625],{"class":761},[748,2651,818],{"class":753},[748,2653,2318],{"class":761},[748,2655,824],{"class":753},[748,2657,1417],{"class":827},[748,2659,2660],{"class":761},"($input, [",[748,2662,2663],{"class":959},"'http'",[748,2665,1356],{"class":761},[748,2667,2668],{"class":959},"'https'",[748,2670,1356],{"class":761},[748,2672,2673],{"class":959},"'ftp'",[748,2675,1356],{"class":761},[748,2677,2678],{"class":959},"'mailto'",[748,2680,2331],{"class":761},[1056,2682,2684],{"id":2683},"dynamic-type-based-sanitization","Dynamic Type-Based Sanitization",[739,2686,2688],{"className":741,"code":2687,"language":743,"meta":744,"style":744},"$sanitizer = $app->make(Sanitizer::class);\n\n\u002F\u002F Sanitize by type name string\n$clean = $sanitizer->sanitize($value, 'email');\n$clean = $sanitizer->sanitize($value, 'int');\n$clean = $sanitizer->sanitize($value, 'html');\n",[705,2689,2690,2710,2714,2719,2740,2759],{"__ignoreMap":744},[748,2691,2692,2694,2696,2698,2700,2702,2704,2706,2708],{"class":750,"line":6},[748,2693,867],{"class":761},[748,2695,818],{"class":753},[748,2697,821],{"class":761},[748,2699,824],{"class":753},[748,2701,828],{"class":827},[748,2703,831],{"class":761},[748,2705,880],{"class":757},[748,2707,837],{"class":753},[748,2709,840],{"class":761},[748,2711,2712],{"class":750,"line":29},[748,2713,804],{"emptyLinePlaceholder":803},[748,2715,2716],{"class":750,"line":14},[748,2717,2718],{"class":809},"\u002F\u002F Sanitize by type name string\n",[748,2720,2721,2724,2726,2728,2730,2733,2736,2738],{"class":750,"line":18},[748,2722,2723],{"class":761},"$clean ",[748,2725,818],{"class":753},[748,2727,2318],{"class":761},[748,2729,824],{"class":753},[748,2731,2732],{"class":827},"sanitize",[748,2734,2735],{"class":761},"($value, ",[748,2737,2392],{"class":959},[748,2739,840],{"class":761},[748,2741,2742,2744,2746,2748,2750,2752,2754,2757],{"class":750,"line":70},[748,2743,2723],{"class":761},[748,2745,818],{"class":753},[748,2747,2318],{"class":761},[748,2749,824],{"class":753},[748,2751,2732],{"class":827},[748,2753,2735],{"class":761},[748,2755,2756],{"class":959},"'int'",[748,2758,840],{"class":761},[748,2760,2761,2763,2765,2767,2769,2771,2773,2776],{"class":750,"line":74},[748,2762,2723],{"class":761},[748,2764,818],{"class":753},[748,2766,2318],{"class":761},[748,2768,824],{"class":753},[748,2770,2732],{"class":827},[748,2772,2735],{"class":761},[748,2774,2775],{"class":959},"'html'",[748,2777,840],{"class":761},[1056,2779,2781],{"id":2780},"array-sanitization","Array Sanitization",[739,2783,2785],{"className":741,"code":2784,"language":743,"meta":744,"style":744},"$sanitizer = $app->make(Sanitizer::class);\n\n\u002F\u002F Sanitize all elements with the same type\n$cleanTags = $sanitizer->array($_POST['tags'], 'text');\n$cleanIds  = $sanitizer->array($_POST['ids'], 'absint');\n",[705,2786,2787,2807,2811,2816,2842],{"__ignoreMap":744},[748,2788,2789,2791,2793,2795,2797,2799,2801,2803,2805],{"class":750,"line":6},[748,2790,867],{"class":761},[748,2792,818],{"class":753},[748,2794,821],{"class":761},[748,2796,824],{"class":753},[748,2798,828],{"class":827},[748,2800,831],{"class":761},[748,2802,880],{"class":757},[748,2804,837],{"class":753},[748,2806,840],{"class":761},[748,2808,2809],{"class":750,"line":29},[748,2810,804],{"emptyLinePlaceholder":803},[748,2812,2813],{"class":750,"line":14},[748,2814,2815],{"class":809},"\u002F\u002F Sanitize all elements with the same type\n",[748,2817,2818,2821,2823,2825,2827,2830,2832,2835,2837,2840],{"class":750,"line":18},[748,2819,2820],{"class":761},"$cleanTags ",[748,2822,818],{"class":753},[748,2824,2318],{"class":761},[748,2826,824],{"class":753},[748,2828,2829],{"class":827},"array",[748,2831,1141],{"class":761},[748,2833,2834],{"class":959},"'tags'",[748,2836,1147],{"class":761},[748,2838,2839],{"class":959},"'text'",[748,2841,840],{"class":761},[748,2843,2844,2847,2849,2851,2853,2855,2857,2860,2862,2865],{"class":750,"line":70},[748,2845,2846],{"class":761},"$cleanIds  ",[748,2848,818],{"class":753},[748,2850,2318],{"class":761},[748,2852,824],{"class":753},[748,2854,2829],{"class":827},[748,2856,1141],{"class":761},[748,2858,2859],{"class":959},"'ids'",[748,2861,1147],{"class":761},[748,2863,2864],{"class":959},"'absint'",[748,2866,840],{"class":761},[1056,2868,2870,2871],{"id":2869},"bulk-sanitization-with-sanitizemany","Bulk Sanitization with ",[705,2872,2873],{},"sanitizeMany",[739,2875,2877],{"className":741,"code":2876,"language":743,"meta":744,"style":744},"$sanitizer = $app->make(Sanitizer::class);\n\n$clean = $sanitizer->sanitizeMany($_POST, [\n    'title'    => 'text',\n    'email'    => 'email',\n    'content'  => 'html',\n    'website'  => 'url',\n    'post_id'  => 'absint',\n    'price'    => 'float',\n    'active'   => 'bool',\n    'slug'     => 'slug',\n]);\n\n\u002F\u002F $clean only contains keys that exist in both $_POST and the type map\necho $clean['title'];  \u002F\u002F sanitized\necho $clean['email'];  \u002F\u002F sanitized\n",[705,2878,2879,2899,2903,2918,2931,2943,2956,2968,2980,2992,3005,3018,3022,3026,3031,3047],{"__ignoreMap":744},[748,2880,2881,2883,2885,2887,2889,2891,2893,2895,2897],{"class":750,"line":6},[748,2882,867],{"class":761},[748,2884,818],{"class":753},[748,2886,821],{"class":761},[748,2888,824],{"class":753},[748,2890,828],{"class":827},[748,2892,831],{"class":761},[748,2894,880],{"class":757},[748,2896,837],{"class":753},[748,2898,840],{"class":761},[748,2900,2901],{"class":750,"line":29},[748,2902,804],{"emptyLinePlaceholder":803},[748,2904,2905,2907,2909,2911,2913,2915],{"class":750,"line":14},[748,2906,2723],{"class":761},[748,2908,818],{"class":753},[748,2910,2318],{"class":761},[748,2912,824],{"class":753},[748,2914,2873],{"class":827},[748,2916,2917],{"class":761},"($_POST, [\n",[748,2919,2920,2923,2926,2929],{"class":750,"line":18},[748,2921,2922],{"class":959},"    'title'",[748,2924,2925],{"class":753},"    =>",[748,2927,2928],{"class":959}," 'text'",[748,2930,1974],{"class":761},[748,2932,2933,2936,2938,2941],{"class":750,"line":70},[748,2934,2935],{"class":959},"    'email'",[748,2937,2925],{"class":753},[748,2939,2940],{"class":959}," 'email'",[748,2942,1974],{"class":761},[748,2944,2945,2948,2951,2954],{"class":750,"line":74},[748,2946,2947],{"class":959},"    'content'",[748,2949,2950],{"class":753},"  =>",[748,2952,2953],{"class":959}," 'html'",[748,2955,1974],{"class":761},[748,2957,2958,2961,2963,2966],{"class":750,"line":78},[748,2959,2960],{"class":959},"    'website'",[748,2962,2950],{"class":753},[748,2964,2965],{"class":959}," 'url'",[748,2967,1974],{"class":761},[748,2969,2970,2973,2975,2978],{"class":750,"line":82},[748,2971,2972],{"class":959},"    'post_id'",[748,2974,2950],{"class":753},[748,2976,2977],{"class":959}," 'absint'",[748,2979,1974],{"class":761},[748,2981,2982,2985,2987,2990],{"class":750,"line":86},[748,2983,2984],{"class":959},"    'price'",[748,2986,2925],{"class":753},[748,2988,2989],{"class":959}," 'float'",[748,2991,1974],{"class":761},[748,2993,2994,2997,3000,3003],{"class":750,"line":90},[748,2995,2996],{"class":959},"    'active'",[748,2998,2999],{"class":753},"   =>",[748,3001,3002],{"class":959}," 'bool'",[748,3004,1974],{"class":761},[748,3006,3007,3010,3013,3016],{"class":750,"line":887},[748,3008,3009],{"class":959},"    'slug'",[748,3011,3012],{"class":753},"     =>",[748,3014,3015],{"class":959}," 'slug'",[748,3017,1974],{"class":761},[748,3019,3020],{"class":750,"line":910},[748,3021,2331],{"class":761},[748,3023,3024],{"class":750,"line":933},[748,3025,804],{"emptyLinePlaceholder":803},[748,3027,3028],{"class":750,"line":938},[748,3029,3030],{"class":809},"\u002F\u002F $clean only contains keys that exist in both $_POST and the type map\n",[748,3032,3033,3036,3039,3041,3044],{"class":750,"line":944},[748,3034,3035],{"class":757},"echo",[748,3037,3038],{"class":761}," $clean[",[748,3040,2328],{"class":959},[748,3042,3043],{"class":761},"];  ",[748,3045,3046],{"class":809},"\u002F\u002F sanitized\n",[748,3048,3049,3051,3053,3055,3057],{"class":750,"line":965},[748,3050,3035],{"class":757},[748,3052,3038],{"class":761},[748,3054,2392],{"class":959},[748,3056,3043],{"class":761},[748,3058,3046],{"class":809},[724,3060],{},[727,3062,3064],{"id":3063},"rate-limiting","Rate Limiting",[701,3066,1051,3067,3069],{},[705,3068,903],{}," class provides request throttling using WordPress transients. Compatible with persistent object cache.",[1056,3071,3073],{"id":3072},"basic-usage","Basic Usage",[739,3075,3077],{"className":741,"code":3076,"language":743,"meta":744,"style":744},"$limiter = $app->make(RateLimiter::class);\n\n\u002F\u002F Generate a key scoped to the current user (falls back to IP for guests)\n$key = $limiter->forUser('login');\n\n\u002F\u002F Check if rate limited\nif ($limiter->tooManyAttempts($key)) {\n    $wait = $limiter->availableIn($key);\n    wp_send_json_error([\n        'message' => \"Too many attempts. Try again in {$wait} seconds.\",\n    ], 429);\n}\n\n\u002F\u002F Record a hit\n$limiter->hit($key);\n",[705,3078,3079,3100,3104,3109,3131,3135,3140,3155,3172,3180,3199,3209,3213,3217,3222],{"__ignoreMap":744},[748,3080,3081,3084,3086,3088,3090,3092,3094,3096,3098],{"class":750,"line":6},[748,3082,3083],{"class":761},"$limiter ",[748,3085,818],{"class":753},[748,3087,821],{"class":761},[748,3089,824],{"class":753},[748,3091,828],{"class":827},[748,3093,831],{"class":761},[748,3095,903],{"class":757},[748,3097,837],{"class":753},[748,3099,840],{"class":761},[748,3101,3102],{"class":750,"line":29},[748,3103,804],{"emptyLinePlaceholder":803},[748,3105,3106],{"class":750,"line":14},[748,3107,3108],{"class":809},"\u002F\u002F Generate a key scoped to the current user (falls back to IP for guests)\n",[748,3110,3111,3114,3116,3119,3121,3124,3126,3129],{"class":750,"line":18},[748,3112,3113],{"class":761},"$key ",[748,3115,818],{"class":753},[748,3117,3118],{"class":761}," $limiter",[748,3120,824],{"class":753},[748,3122,3123],{"class":827},"forUser",[748,3125,831],{"class":761},[748,3127,3128],{"class":959},"'login'",[748,3130,840],{"class":761},[748,3132,3133],{"class":750,"line":70},[748,3134,804],{"emptyLinePlaceholder":803},[748,3136,3137],{"class":750,"line":74},[748,3138,3139],{"class":809},"\u002F\u002F Check if rate limited\n",[748,3141,3142,3144,3147,3149,3152],{"class":750,"line":78},[748,3143,1130],{"class":753},[748,3145,3146],{"class":761}," ($limiter",[748,3148,824],{"class":753},[748,3150,3151],{"class":827},"tooManyAttempts",[748,3153,3154],{"class":761},"($key)) {\n",[748,3156,3157,3160,3162,3164,3166,3169],{"class":750,"line":82},[748,3158,3159],{"class":761},"    $wait ",[748,3161,818],{"class":753},[748,3163,3118],{"class":761},[748,3165,824],{"class":753},[748,3167,3168],{"class":827},"availableIn",[748,3170,3171],{"class":761},"($key);\n",[748,3173,3174,3177],{"class":750,"line":86},[748,3175,3176],{"class":827},"    wp_send_json_error",[748,3178,3179],{"class":761},"([\n",[748,3181,3182,3185,3188,3191,3194,3197],{"class":750,"line":90},[748,3183,3184],{"class":959},"        'message'",[748,3186,3187],{"class":753}," =>",[748,3189,3190],{"class":959}," \"Too many attempts. Try again in {",[748,3192,3193],{"class":761},"$wait",[748,3195,3196],{"class":959},"} seconds.\"",[748,3198,1974],{"class":761},[748,3200,3201,3204,3207],{"class":750,"line":887},[748,3202,3203],{"class":761},"    ], ",[748,3205,3206],{"class":757},"429",[748,3208,840],{"class":761},[748,3210,3211],{"class":750,"line":910},[748,3212,1162],{"class":761},[748,3214,3215],{"class":750,"line":933},[748,3216,804],{"emptyLinePlaceholder":803},[748,3218,3219],{"class":750,"line":938},[748,3220,3221],{"class":809},"\u002F\u002F Record a hit\n",[748,3223,3224,3227,3229,3232],{"class":750,"line":944},[748,3225,3226],{"class":761},"$limiter",[748,3228,824],{"class":753},[748,3230,3231],{"class":827},"hit",[748,3233,3171],{"class":761},[1056,3235,3237],{"id":3236},"login-throttling-example","Login Throttling Example",[739,3239,3241],{"className":741,"code":3240,"language":743,"meta":744,"style":744},"$limiter = $app->make(RateLimiter::class);\n\n$key = $limiter->forIp('login');\n\nif ($limiter->tooManyAttempts($key)) {\n    $seconds = $limiter->availableIn($key);\n    wp_die(\"Too many login attempts. Please wait {$seconds} seconds.\");\n}\n\n$limiter->hit($key);\n\n\u002F\u002F Process login...\n\n\u002F\u002F On successful login, clear the limiter\n$limiter->clear($key);\n",[705,3242,3243,3263,3267,3286,3290,3302,3317,3333,3337,3341,3351,3355,3360,3364,3369],{"__ignoreMap":744},[748,3244,3245,3247,3249,3251,3253,3255,3257,3259,3261],{"class":750,"line":6},[748,3246,3083],{"class":761},[748,3248,818],{"class":753},[748,3250,821],{"class":761},[748,3252,824],{"class":753},[748,3254,828],{"class":827},[748,3256,831],{"class":761},[748,3258,903],{"class":757},[748,3260,837],{"class":753},[748,3262,840],{"class":761},[748,3264,3265],{"class":750,"line":29},[748,3266,804],{"emptyLinePlaceholder":803},[748,3268,3269,3271,3273,3275,3277,3280,3282,3284],{"class":750,"line":14},[748,3270,3113],{"class":761},[748,3272,818],{"class":753},[748,3274,3118],{"class":761},[748,3276,824],{"class":753},[748,3278,3279],{"class":827},"forIp",[748,3281,831],{"class":761},[748,3283,3128],{"class":959},[748,3285,840],{"class":761},[748,3287,3288],{"class":750,"line":18},[748,3289,804],{"emptyLinePlaceholder":803},[748,3291,3292,3294,3296,3298,3300],{"class":750,"line":70},[748,3293,1130],{"class":753},[748,3295,3146],{"class":761},[748,3297,824],{"class":753},[748,3299,3151],{"class":827},[748,3301,3154],{"class":761},[748,3303,3304,3307,3309,3311,3313,3315],{"class":750,"line":74},[748,3305,3306],{"class":761},"    $seconds ",[748,3308,818],{"class":753},[748,3310,3118],{"class":761},[748,3312,824],{"class":753},[748,3314,3168],{"class":827},[748,3316,3171],{"class":761},[748,3318,3319,3321,3323,3326,3329,3331],{"class":750,"line":78},[748,3320,1644],{"class":827},[748,3322,831],{"class":761},[748,3324,3325],{"class":959},"\"Too many login attempts. Please wait {",[748,3327,3328],{"class":761},"$seconds",[748,3330,3196],{"class":959},[748,3332,840],{"class":761},[748,3334,3335],{"class":750,"line":82},[748,3336,1162],{"class":761},[748,3338,3339],{"class":750,"line":86},[748,3340,804],{"emptyLinePlaceholder":803},[748,3342,3343,3345,3347,3349],{"class":750,"line":90},[748,3344,3226],{"class":761},[748,3346,824],{"class":753},[748,3348,3231],{"class":827},[748,3350,3171],{"class":761},[748,3352,3353],{"class":750,"line":887},[748,3354,804],{"emptyLinePlaceholder":803},[748,3356,3357],{"class":750,"line":910},[748,3358,3359],{"class":809},"\u002F\u002F Process login...\n",[748,3361,3362],{"class":750,"line":933},[748,3363,804],{"emptyLinePlaceholder":803},[748,3365,3366],{"class":750,"line":938},[748,3367,3368],{"class":809},"\u002F\u002F On successful login, clear the limiter\n",[748,3370,3371,3373,3375,3378],{"class":750,"line":944},[748,3372,3226],{"class":761},[748,3374,824],{"class":753},[748,3376,3377],{"class":827},"clear",[748,3379,3171],{"class":761},[1056,3381,3383,3384,3387],{"id":3382},"using-attempt-with-callbacks","Using ",[705,3385,3386],{},"attempt()"," with Callbacks",[739,3389,3391],{"className":741,"code":3390,"language":743,"meta":744,"style":744},"$limiter = $app->make(RateLimiter::class);\n\n$key = $limiter->forUser('api_call');\n\n$result = $limiter->attempt(\n    $key,\n    \u002F\u002F Allowed callback\n    function () {\n        return process_api_request();\n    },\n    \u002F\u002F Limited callback (optional)\n    function (int $waitSeconds) {\n        wp_send_json_error([\n            'message' => \"Rate limited. Retry in {$waitSeconds}s.\",\n            'retry_after' => $waitSeconds,\n        ], 429);\n    }\n);\n",[705,3392,3393,3413,3417,3436,3440,3456,3461,3466,3474,3484,3489,3494,3506,3513,3531,3541,3550,3555],{"__ignoreMap":744},[748,3394,3395,3397,3399,3401,3403,3405,3407,3409,3411],{"class":750,"line":6},[748,3396,3083],{"class":761},[748,3398,818],{"class":753},[748,3400,821],{"class":761},[748,3402,824],{"class":753},[748,3404,828],{"class":827},[748,3406,831],{"class":761},[748,3408,903],{"class":757},[748,3410,837],{"class":753},[748,3412,840],{"class":761},[748,3414,3415],{"class":750,"line":29},[748,3416,804],{"emptyLinePlaceholder":803},[748,3418,3419,3421,3423,3425,3427,3429,3431,3434],{"class":750,"line":14},[748,3420,3113],{"class":761},[748,3422,818],{"class":753},[748,3424,3118],{"class":761},[748,3426,824],{"class":753},[748,3428,3123],{"class":827},[748,3430,831],{"class":761},[748,3432,3433],{"class":959},"'api_call'",[748,3435,840],{"class":761},[748,3437,3438],{"class":750,"line":18},[748,3439,804],{"emptyLinePlaceholder":803},[748,3441,3442,3445,3447,3449,3451,3454],{"class":750,"line":70},[748,3443,3444],{"class":761},"$result ",[748,3446,818],{"class":753},[748,3448,3118],{"class":761},[748,3450,824],{"class":753},[748,3452,3453],{"class":827},"attempt",[748,3455,1420],{"class":761},[748,3457,3458],{"class":750,"line":74},[748,3459,3460],{"class":761},"    $key,\n",[748,3462,3463],{"class":750,"line":78},[748,3464,3465],{"class":809},"    \u002F\u002F Allowed callback\n",[748,3467,3468,3471],{"class":750,"line":82},[748,3469,3470],{"class":753},"    function",[748,3472,3473],{"class":761}," () {\n",[748,3475,3476,3479,3482],{"class":750,"line":86},[748,3477,3478],{"class":753},"        return",[748,3480,3481],{"class":827}," process_api_request",[748,3483,2054],{"class":761},[748,3485,3486],{"class":750,"line":90},[748,3487,3488],{"class":761},"    },\n",[748,3490,3491],{"class":750,"line":887},[748,3492,3493],{"class":809},"    \u002F\u002F Limited callback (optional)\n",[748,3495,3496,3498,3501,3503],{"class":750,"line":910},[748,3497,3470],{"class":753},[748,3499,3500],{"class":761}," (",[748,3502,2428],{"class":753},[748,3504,3505],{"class":761}," $waitSeconds) {\n",[748,3507,3508,3511],{"class":750,"line":933},[748,3509,3510],{"class":827},"        wp_send_json_error",[748,3512,3179],{"class":761},[748,3514,3515,3518,3520,3523,3526,3529],{"class":750,"line":938},[748,3516,3517],{"class":959},"            'message'",[748,3519,3187],{"class":753},[748,3521,3522],{"class":959}," \"Rate limited. Retry in {",[748,3524,3525],{"class":761},"$waitSeconds",[748,3527,3528],{"class":959},"}s.\"",[748,3530,1974],{"class":761},[748,3532,3533,3536,3538],{"class":750,"line":944},[748,3534,3535],{"class":959},"            'retry_after'",[748,3537,3187],{"class":753},[748,3539,3540],{"class":761}," $waitSeconds,\n",[748,3542,3543,3546,3548],{"class":750,"line":965},[748,3544,3545],{"class":761},"        ], ",[748,3547,3206],{"class":757},[748,3549,840],{"class":761},[748,3551,3552],{"class":750,"line":985},[748,3553,3554],{"class":761},"    }\n",[748,3556,3557],{"class":750,"line":1005},[748,3558,840],{"class":761},[1056,3560,3562],{"id":3561},"checking-remaining-attempts","Checking Remaining Attempts",[739,3564,3566],{"className":741,"code":3565,"language":743,"meta":744,"style":744},"$limiter = $app->make(RateLimiter::class);\n\n$key = $limiter->forUser('api_call');\n$remaining = $limiter->remaining($key);\n\n\u002F\u002F Include in response headers\nheader(\"X-RateLimit-Remaining: {$remaining}\");\n",[705,3567,3568,3588,3592,3610,3626,3630,3635],{"__ignoreMap":744},[748,3569,3570,3572,3574,3576,3578,3580,3582,3584,3586],{"class":750,"line":6},[748,3571,3083],{"class":761},[748,3573,818],{"class":753},[748,3575,821],{"class":761},[748,3577,824],{"class":753},[748,3579,828],{"class":827},[748,3581,831],{"class":761},[748,3583,903],{"class":757},[748,3585,837],{"class":753},[748,3587,840],{"class":761},[748,3589,3590],{"class":750,"line":29},[748,3591,804],{"emptyLinePlaceholder":803},[748,3593,3594,3596,3598,3600,3602,3604,3606,3608],{"class":750,"line":14},[748,3595,3113],{"class":761},[748,3597,818],{"class":753},[748,3599,3118],{"class":761},[748,3601,824],{"class":753},[748,3603,3123],{"class":827},[748,3605,831],{"class":761},[748,3607,3433],{"class":959},[748,3609,840],{"class":761},[748,3611,3612,3615,3617,3619,3621,3624],{"class":750,"line":18},[748,3613,3614],{"class":761},"$remaining ",[748,3616,818],{"class":753},[748,3618,3118],{"class":761},[748,3620,824],{"class":753},[748,3622,3623],{"class":827},"remaining",[748,3625,3171],{"class":761},[748,3627,3628],{"class":750,"line":70},[748,3629,804],{"emptyLinePlaceholder":803},[748,3631,3632],{"class":750,"line":74},[748,3633,3634],{"class":809},"\u002F\u002F Include in response headers\n",[748,3636,3637,3640,3642,3645,3648,3651],{"class":750,"line":78},[748,3638,3639],{"class":757},"header",[748,3641,831],{"class":761},[748,3643,3644],{"class":959},"\"X-RateLimit-Remaining: {",[748,3646,3647],{"class":761},"$remaining",[748,3649,3650],{"class":959},"}\"",[748,3652,840],{"class":761},[1056,3654,3656],{"id":3655},"ip-based-rate-limiting","IP-Based Rate Limiting",[739,3658,3660],{"className":741,"code":3659,"language":743,"meta":744,"style":744},"$limiter = $app->make(RateLimiter::class);\n\n\u002F\u002F IP-based key (supports Cloudflare, X-Forwarded-For, X-Real-IP)\n$key = $limiter->forIp('contact_form');\n\n$limiter->hit($key);\n\nif ($limiter->tooManyAttempts($key)) {\n    \u002F\u002F Blocked\n}\n",[705,3661,3662,3682,3686,3691,3710,3714,3724,3728,3740,3745],{"__ignoreMap":744},[748,3663,3664,3666,3668,3670,3672,3674,3676,3678,3680],{"class":750,"line":6},[748,3665,3083],{"class":761},[748,3667,818],{"class":753},[748,3669,821],{"class":761},[748,3671,824],{"class":753},[748,3673,828],{"class":827},[748,3675,831],{"class":761},[748,3677,903],{"class":757},[748,3679,837],{"class":753},[748,3681,840],{"class":761},[748,3683,3684],{"class":750,"line":29},[748,3685,804],{"emptyLinePlaceholder":803},[748,3687,3688],{"class":750,"line":14},[748,3689,3690],{"class":809},"\u002F\u002F IP-based key (supports Cloudflare, X-Forwarded-For, X-Real-IP)\n",[748,3692,3693,3695,3697,3699,3701,3703,3705,3708],{"class":750,"line":18},[748,3694,3113],{"class":761},[748,3696,818],{"class":753},[748,3698,3118],{"class":761},[748,3700,824],{"class":753},[748,3702,3279],{"class":827},[748,3704,831],{"class":761},[748,3706,3707],{"class":959},"'contact_form'",[748,3709,840],{"class":761},[748,3711,3712],{"class":750,"line":70},[748,3713,804],{"emptyLinePlaceholder":803},[748,3715,3716,3718,3720,3722],{"class":750,"line":74},[748,3717,3226],{"class":761},[748,3719,824],{"class":753},[748,3721,3231],{"class":827},[748,3723,3171],{"class":761},[748,3725,3726],{"class":750,"line":78},[748,3727,804],{"emptyLinePlaceholder":803},[748,3729,3730,3732,3734,3736,3738],{"class":750,"line":82},[748,3731,1130],{"class":753},[748,3733,3146],{"class":761},[748,3735,824],{"class":753},[748,3737,3151],{"class":827},[748,3739,3154],{"class":761},[748,3741,3742],{"class":750,"line":86},[748,3743,3744],{"class":809},"    \u002F\u002F Blocked\n",[748,3746,3747],{"class":750,"line":90},[748,3748,1162],{"class":761},[724,3750],{},[727,3752,3754],{"id":3753},"file-upload-security","File Upload Security",[701,3756,1051,3757,3759],{},[705,3758,926],{}," class wraps WordPress uploads with nonce verification, capability checks, MIME validation, and size limits.",[1056,3761,3763],{"id":3762},"single-file-upload","Single File Upload",[739,3765,3767],{"className":741,"code":3766,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n$result = $upload->handle($_FILES['avatar'], 'upload_avatar');\n\nif (is_wp_error($result)) {\n    echo $result->get_error_message();\n} else {\n    $filePath = $result['file']; \u002F\u002F Server path\n    $fileUrl  = $result['url'];  \u002F\u002F Public URL\n    $fileType = $result['type']; \u002F\u002F MIME type\n}\n",[705,3768,3769,3790,3794,3821,3825,3837,3852,3863,3882,3899,3916],{"__ignoreMap":744},[748,3770,3771,3774,3776,3778,3780,3782,3784,3786,3788],{"class":750,"line":6},[748,3772,3773],{"class":761},"$upload ",[748,3775,818],{"class":753},[748,3777,821],{"class":761},[748,3779,824],{"class":753},[748,3781,828],{"class":827},[748,3783,831],{"class":761},[748,3785,926],{"class":757},[748,3787,837],{"class":753},[748,3789,840],{"class":761},[748,3791,3792],{"class":750,"line":29},[748,3793,804],{"emptyLinePlaceholder":803},[748,3795,3796,3798,3800,3803,3805,3808,3811,3814,3816,3819],{"class":750,"line":14},[748,3797,3444],{"class":761},[748,3799,818],{"class":753},[748,3801,3802],{"class":761}," $upload",[748,3804,824],{"class":753},[748,3806,3807],{"class":827},"handle",[748,3809,3810],{"class":761},"($_FILES[",[748,3812,3813],{"class":959},"'avatar'",[748,3815,1147],{"class":761},[748,3817,3818],{"class":959},"'upload_avatar'",[748,3820,840],{"class":761},[748,3822,3823],{"class":750,"line":18},[748,3824,804],{"emptyLinePlaceholder":803},[748,3826,3827,3829,3831,3834],{"class":750,"line":70},[748,3828,1130],{"class":753},[748,3830,3500],{"class":761},[748,3832,3833],{"class":827},"is_wp_error",[748,3835,3836],{"class":761},"($result)) {\n",[748,3838,3839,3842,3845,3847,3850],{"class":750,"line":74},[748,3840,3841],{"class":757},"    echo",[748,3843,3844],{"class":761}," $result",[748,3846,824],{"class":753},[748,3848,3849],{"class":827},"get_error_message",[748,3851,2054],{"class":761},[748,3853,3854,3857,3860],{"class":750,"line":78},[748,3855,3856],{"class":761},"} ",[748,3858,3859],{"class":753},"else",[748,3861,3862],{"class":761}," {\n",[748,3864,3865,3868,3870,3873,3876,3879],{"class":750,"line":82},[748,3866,3867],{"class":761},"    $filePath ",[748,3869,818],{"class":753},[748,3871,3872],{"class":761}," $result[",[748,3874,3875],{"class":959},"'file'",[748,3877,3878],{"class":761},"]; ",[748,3880,3881],{"class":809},"\u002F\u002F Server path\n",[748,3883,3884,3887,3889,3891,3894,3896],{"class":750,"line":86},[748,3885,3886],{"class":761},"    $fileUrl  ",[748,3888,818],{"class":753},[748,3890,3872],{"class":761},[748,3892,3893],{"class":959},"'url'",[748,3895,3043],{"class":761},[748,3897,3898],{"class":809},"\u002F\u002F Public URL\n",[748,3900,3901,3904,3906,3908,3911,3913],{"class":750,"line":90},[748,3902,3903],{"class":761},"    $fileType ",[748,3905,818],{"class":753},[748,3907,3872],{"class":761},[748,3909,3910],{"class":959},"'type'",[748,3912,3878],{"class":761},[748,3914,3915],{"class":809},"\u002F\u002F MIME type\n",[748,3917,3918],{"class":750,"line":887},[748,3919,1162],{"class":761},[1056,3921,3923],{"id":3922},"multiple-file-uploads","Multiple File Uploads",[739,3925,3927],{"className":741,"code":3926,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n$results = $upload->handleMultiple($_FILES['documents'], 'upload_documents');\n\nforeach ($results as $result) {\n    if (is_wp_error($result)) {\n        echo 'Error: ' . $result->get_error_message();\n    } else {\n        echo 'Uploaded: ' . $result['url'];\n    }\n}\n",[705,3928,3929,3949,3953,3979,3983,3997,4008,4027,4036,4052,4056],{"__ignoreMap":744},[748,3930,3931,3933,3935,3937,3939,3941,3943,3945,3947],{"class":750,"line":6},[748,3932,3773],{"class":761},[748,3934,818],{"class":753},[748,3936,821],{"class":761},[748,3938,824],{"class":753},[748,3940,828],{"class":827},[748,3942,831],{"class":761},[748,3944,926],{"class":757},[748,3946,837],{"class":753},[748,3948,840],{"class":761},[748,3950,3951],{"class":750,"line":29},[748,3952,804],{"emptyLinePlaceholder":803},[748,3954,3955,3958,3960,3962,3964,3967,3969,3972,3974,3977],{"class":750,"line":14},[748,3956,3957],{"class":761},"$results ",[748,3959,818],{"class":753},[748,3961,3802],{"class":761},[748,3963,824],{"class":753},[748,3965,3966],{"class":827},"handleMultiple",[748,3968,3810],{"class":761},[748,3970,3971],{"class":959},"'documents'",[748,3973,1147],{"class":761},[748,3975,3976],{"class":959},"'upload_documents'",[748,3978,840],{"class":761},[748,3980,3981],{"class":750,"line":18},[748,3982,804],{"emptyLinePlaceholder":803},[748,3984,3985,3988,3991,3994],{"class":750,"line":70},[748,3986,3987],{"class":753},"foreach",[748,3989,3990],{"class":761}," ($results ",[748,3992,3993],{"class":753},"as",[748,3995,3996],{"class":761}," $result) {\n",[748,3998,3999,4002,4004,4006],{"class":750,"line":74},[748,4000,4001],{"class":753},"    if",[748,4003,3500],{"class":761},[748,4005,3833],{"class":827},[748,4007,3836],{"class":761},[748,4009,4010,4013,4016,4019,4021,4023,4025],{"class":750,"line":78},[748,4011,4012],{"class":757},"        echo",[748,4014,4015],{"class":959}," 'Error: '",[748,4017,4018],{"class":753}," .",[748,4020,3844],{"class":761},[748,4022,824],{"class":753},[748,4024,3849],{"class":827},[748,4026,2054],{"class":761},[748,4028,4029,4032,4034],{"class":750,"line":82},[748,4030,4031],{"class":761},"    } ",[748,4033,3859],{"class":753},[748,4035,3862],{"class":761},[748,4037,4038,4040,4043,4045,4047,4049],{"class":750,"line":86},[748,4039,4012],{"class":757},[748,4041,4042],{"class":959}," 'Uploaded: '",[748,4044,4018],{"class":753},[748,4046,3872],{"class":761},[748,4048,3893],{"class":959},[748,4050,4051],{"class":761},"];\n",[748,4053,4054],{"class":750,"line":90},[748,4055,3554],{"class":761},[748,4057,4058],{"class":750,"line":887},[748,4059,1162],{"class":761},[1056,4061,4063],{"id":4062},"custom-mime-types","Custom MIME Types",[739,4065,4067],{"className":741,"code":4066,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n$result = $upload\n    ->allowMimes([\n        'jpg|jpeg' => 'image\u002Fjpeg',\n        'png'      => 'image\u002Fpng',\n        'webp'     => 'image\u002Fwebp',\n    ])\n    ->handle($_FILES['photo'], 'upload_photo');\n",[705,4068,4069,4089,4093,4102,4112,4124,4137,4149,4154],{"__ignoreMap":744},[748,4070,4071,4073,4075,4077,4079,4081,4083,4085,4087],{"class":750,"line":6},[748,4072,3773],{"class":761},[748,4074,818],{"class":753},[748,4076,821],{"class":761},[748,4078,824],{"class":753},[748,4080,828],{"class":827},[748,4082,831],{"class":761},[748,4084,926],{"class":757},[748,4086,837],{"class":753},[748,4088,840],{"class":761},[748,4090,4091],{"class":750,"line":29},[748,4092,804],{"emptyLinePlaceholder":803},[748,4094,4095,4097,4099],{"class":750,"line":14},[748,4096,3444],{"class":761},[748,4098,818],{"class":753},[748,4100,4101],{"class":761}," $upload\n",[748,4103,4104,4107,4110],{"class":750,"line":18},[748,4105,4106],{"class":753},"    ->",[748,4108,4109],{"class":827},"allowMimes",[748,4111,3179],{"class":761},[748,4113,4114,4117,4119,4122],{"class":750,"line":70},[748,4115,4116],{"class":959},"        'jpg|jpeg'",[748,4118,3187],{"class":753},[748,4120,4121],{"class":959}," 'image\u002Fjpeg'",[748,4123,1974],{"class":761},[748,4125,4126,4129,4132,4135],{"class":750,"line":74},[748,4127,4128],{"class":959},"        'png'",[748,4130,4131],{"class":753},"      =>",[748,4133,4134],{"class":959}," 'image\u002Fpng'",[748,4136,1974],{"class":761},[748,4138,4139,4142,4144,4147],{"class":750,"line":78},[748,4140,4141],{"class":959},"        'webp'",[748,4143,3012],{"class":753},[748,4145,4146],{"class":959}," 'image\u002Fwebp'",[748,4148,1974],{"class":761},[748,4150,4151],{"class":750,"line":82},[748,4152,4153],{"class":761},"    ])\n",[748,4155,4156,4158,4160,4162,4165,4167,4170],{"class":750,"line":86},[748,4157,4106],{"class":753},[748,4159,3807],{"class":827},[748,4161,3810],{"class":761},[748,4163,4164],{"class":959},"'photo'",[748,4166,1147],{"class":761},[748,4168,4169],{"class":959},"'upload_photo'",[748,4171,840],{"class":761},[1056,4173,4175],{"id":4174},"custom-max-file-size","Custom Max File Size",[739,4177,4179],{"className":741,"code":4178,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n$result = $upload\n    ->maxSize(2 * 1024 * 1024) \u002F\u002F 2 MB\n    ->handle($_FILES['thumbnail'], 'upload_thumbnail');\n",[705,4180,4181,4201,4205,4213,4241],{"__ignoreMap":744},[748,4182,4183,4185,4187,4189,4191,4193,4195,4197,4199],{"class":750,"line":6},[748,4184,3773],{"class":761},[748,4186,818],{"class":753},[748,4188,821],{"class":761},[748,4190,824],{"class":753},[748,4192,828],{"class":827},[748,4194,831],{"class":761},[748,4196,926],{"class":757},[748,4198,837],{"class":753},[748,4200,840],{"class":761},[748,4202,4203],{"class":750,"line":29},[748,4204,804],{"emptyLinePlaceholder":803},[748,4206,4207,4209,4211],{"class":750,"line":14},[748,4208,3444],{"class":761},[748,4210,818],{"class":753},[748,4212,4101],{"class":761},[748,4214,4215,4217,4220,4222,4225,4228,4231,4233,4235,4238],{"class":750,"line":18},[748,4216,4106],{"class":753},[748,4218,4219],{"class":827},"maxSize",[748,4221,831],{"class":761},[748,4223,4224],{"class":757},"2",[748,4226,4227],{"class":753}," *",[748,4229,4230],{"class":757}," 1024",[748,4232,4227],{"class":753},[748,4234,4230],{"class":757},[748,4236,4237],{"class":761},") ",[748,4239,4240],{"class":809},"\u002F\u002F 2 MB\n",[748,4242,4243,4245,4247,4249,4252,4254,4257],{"class":750,"line":70},[748,4244,4106],{"class":753},[748,4246,3807],{"class":827},[748,4248,3810],{"class":761},[748,4250,4251],{"class":959},"'thumbnail'",[748,4253,1147],{"class":761},[748,4255,4256],{"class":959},"'upload_thumbnail'",[748,4258,840],{"class":761},[1056,4260,4262],{"id":4261},"chaining-configuration","Chaining Configuration",[739,4264,4266],{"className":741,"code":4265,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n$result = $upload\n    ->allowMimes(['pdf' => 'application\u002Fpdf'])\n    ->maxSize(10 * 1024 * 1024) \u002F\u002F 10 MB\n    ->handle($_FILES['document'], 'upload_document', 'upload_files');\n",[705,4267,4268,4288,4292,4300,4319,4343],{"__ignoreMap":744},[748,4269,4270,4272,4274,4276,4278,4280,4282,4284,4286],{"class":750,"line":6},[748,4271,3773],{"class":761},[748,4273,818],{"class":753},[748,4275,821],{"class":761},[748,4277,824],{"class":753},[748,4279,828],{"class":827},[748,4281,831],{"class":761},[748,4283,926],{"class":757},[748,4285,837],{"class":753},[748,4287,840],{"class":761},[748,4289,4290],{"class":750,"line":29},[748,4291,804],{"emptyLinePlaceholder":803},[748,4293,4294,4296,4298],{"class":750,"line":14},[748,4295,3444],{"class":761},[748,4297,818],{"class":753},[748,4299,4101],{"class":761},[748,4301,4302,4304,4306,4308,4311,4313,4316],{"class":750,"line":18},[748,4303,4106],{"class":753},[748,4305,4109],{"class":827},[748,4307,2201],{"class":761},[748,4309,4310],{"class":959},"'pdf'",[748,4312,3187],{"class":753},[748,4314,4315],{"class":959}," 'application\u002Fpdf'",[748,4317,4318],{"class":761},"])\n",[748,4320,4321,4323,4325,4327,4330,4332,4334,4336,4338,4340],{"class":750,"line":70},[748,4322,4106],{"class":753},[748,4324,4219],{"class":827},[748,4326,831],{"class":761},[748,4328,4329],{"class":757},"10",[748,4331,4227],{"class":753},[748,4333,4230],{"class":757},[748,4335,4227],{"class":753},[748,4337,4230],{"class":757},[748,4339,4237],{"class":761},[748,4341,4342],{"class":809},"\u002F\u002F 10 MB\n",[748,4344,4345,4347,4349,4351,4354,4356,4359,4361,4363],{"class":750,"line":74},[748,4346,4106],{"class":753},[748,4348,3807],{"class":827},[748,4350,3810],{"class":761},[748,4352,4353],{"class":959},"'document'",[748,4355,1147],{"class":761},[748,4357,4358],{"class":959},"'upload_document'",[748,4360,1356],{"class":761},[748,4362,2208],{"class":959},[748,4364,840],{"class":761},[1056,4366,4368],{"id":4367},"custom-capability-requirement","Custom Capability Requirement",[739,4370,4372],{"className":741,"code":4371,"language":743,"meta":744,"style":744},"$upload = $app->make(UploadSecurity::class);\n\n\u002F\u002F Require manage_options instead of the default upload_files\n$result = $upload->handle($_FILES['config'], 'upload_config', 'manage_options');\n",[705,4373,4374,4394,4398,4403],{"__ignoreMap":744},[748,4375,4376,4378,4380,4382,4384,4386,4388,4390,4392],{"class":750,"line":6},[748,4377,3773],{"class":761},[748,4379,818],{"class":753},[748,4381,821],{"class":761},[748,4383,824],{"class":753},[748,4385,828],{"class":827},[748,4387,831],{"class":761},[748,4389,926],{"class":757},[748,4391,837],{"class":753},[748,4393,840],{"class":761},[748,4395,4396],{"class":750,"line":29},[748,4397,804],{"emptyLinePlaceholder":803},[748,4399,4400],{"class":750,"line":14},[748,4401,4402],{"class":809},"\u002F\u002F Require manage_options instead of the default upload_files\n",[748,4404,4405,4407,4409,4411,4413,4415,4417,4420,4422,4425,4427,4429],{"class":750,"line":18},[748,4406,3444],{"class":761},[748,4408,818],{"class":753},[748,4410,3802],{"class":761},[748,4412,824],{"class":753},[748,4414,3807],{"class":827},[748,4416,3810],{"class":761},[748,4418,4419],{"class":959},"'config'",[748,4421,1147],{"class":761},[748,4423,4424],{"class":959},"'upload_config'",[748,4426,1356],{"class":761},[748,4428,1637],{"class":959},[748,4430,840],{"class":761},[1056,4432,4434],{"id":4433},"form-example","Form Example",[739,4436,4438],{"className":741,"code":4437,"language":743,"meta":744,"style":744},"\u002F\u002F Template\n\u003Cform method=\"post\" enctype=\"multipart\u002Fform-data\">\n    \u003C?php $app->make(Nonce::class)->field('upload_avatar'); ?>\n    \u003Cinput type=\"file\" name=\"avatar\">\n    \u003Cbutton type=\"submit\">Upload\u003C\u002Fbutton>\n\u003C\u002Fform>\n",[705,4439,4440,4445,4467,4501,4523,4546],{"__ignoreMap":744},[748,4441,4442],{"class":750,"line":6},[748,4443,4444],{"class":809},"\u002F\u002F Template\n",[748,4446,4447,4449,4451,4453,4455,4457,4460,4462,4465],{"class":750,"line":29},[748,4448,1181],{"class":753},[748,4450,1184],{"class":757},[748,4452,1187],{"class":757},[748,4454,818],{"class":753},[748,4456,1192],{"class":959},[748,4458,4459],{"class":757}," enctype",[748,4461,818],{"class":753},[748,4463,4464],{"class":959},"\"multipart\u002Fform-data\"",[748,4466,1203],{"class":753},[748,4468,4469,4471,4473,4475,4477,4479,4481,4483,4485,4488,4490,4492,4494,4496,4498],{"class":750,"line":14},[748,4470,1208],{"class":753},[748,4472,743],{"class":757},[748,4474,821],{"class":761},[748,4476,824],{"class":753},[748,4478,828],{"class":827},[748,4480,831],{"class":761},[748,4482,834],{"class":757},[748,4484,837],{"class":753},[748,4486,4487],{"class":761},")",[748,4489,824],{"class":753},[748,4491,1242],{"class":827},[748,4493,831],{"class":761},[748,4495,3818],{"class":959},[748,4497,1249],{"class":761},[748,4499,4500],{"class":753},"?>\n",[748,4502,4503,4505,4507,4509,4511,4514,4516,4518,4521],{"class":750,"line":18},[748,4504,1262],{"class":753},[748,4506,1265],{"class":757},[748,4508,1268],{"class":757},[748,4510,818],{"class":753},[748,4512,4513],{"class":959},"\"file\"",[748,4515,1276],{"class":757},[748,4517,818],{"class":753},[748,4519,4520],{"class":959},"\"avatar\"",[748,4522,1203],{"class":753},[748,4524,4525,4527,4529,4531,4533,4535,4537,4540,4542,4544],{"class":750,"line":70},[748,4526,1262],{"class":753},[748,4528,1298],{"class":757},[748,4530,1268],{"class":757},[748,4532,818],{"class":753},[748,4534,1305],{"class":959},[748,4536,1308],{"class":753},[748,4538,4539],{"class":757},"Upload",[748,4541,1314],{"class":753},[748,4543,1298],{"class":757},[748,4545,1203],{"class":753},[748,4547,4548,4550,4552],{"class":750,"line":74},[748,4549,1314],{"class":753},[748,4551,1184],{"class":757},[748,4553,1203],{"class":753},[739,4555,4557],{"className":741,"code":4556,"language":743,"meta":744,"style":744},"\u002F\u002F Handler\n$upload = $app->make(UploadSecurity::class);\n$result = $upload->handle($_FILES['avatar'], 'upload_avatar');\n\nif (is_wp_error($result)) {\n    \u002F\u002F Handle error\n} else {\n    update_user_meta(get_current_user_id(), 'avatar_url', $result['url']);\n}\n",[705,4558,4559,4564,4584,4606,4610,4620,4625,4633,4656],{"__ignoreMap":744},[748,4560,4561],{"class":750,"line":6},[748,4562,4563],{"class":809},"\u002F\u002F Handler\n",[748,4565,4566,4568,4570,4572,4574,4576,4578,4580,4582],{"class":750,"line":29},[748,4567,3773],{"class":761},[748,4569,818],{"class":753},[748,4571,821],{"class":761},[748,4573,824],{"class":753},[748,4575,828],{"class":827},[748,4577,831],{"class":761},[748,4579,926],{"class":757},[748,4581,837],{"class":753},[748,4583,840],{"class":761},[748,4585,4586,4588,4590,4592,4594,4596,4598,4600,4602,4604],{"class":750,"line":14},[748,4587,3444],{"class":761},[748,4589,818],{"class":753},[748,4591,3802],{"class":761},[748,4593,824],{"class":753},[748,4595,3807],{"class":827},[748,4597,3810],{"class":761},[748,4599,3813],{"class":959},[748,4601,1147],{"class":761},[748,4603,3818],{"class":959},[748,4605,840],{"class":761},[748,4607,4608],{"class":750,"line":18},[748,4609,804],{"emptyLinePlaceholder":803},[748,4611,4612,4614,4616,4618],{"class":750,"line":70},[748,4613,1130],{"class":753},[748,4615,3500],{"class":761},[748,4617,3833],{"class":827},[748,4619,3836],{"class":761},[748,4621,4622],{"class":750,"line":74},[748,4623,4624],{"class":809},"    \u002F\u002F Handle error\n",[748,4626,4627,4629,4631],{"class":750,"line":78},[748,4628,3856],{"class":761},[748,4630,3859],{"class":753},[748,4632,3862],{"class":761},[748,4634,4635,4638,4640,4643,4646,4649,4652,4654],{"class":750,"line":82},[748,4636,4637],{"class":827},"    update_user_meta",[748,4639,831],{"class":761},[748,4641,4642],{"class":827},"get_current_user_id",[748,4644,4645],{"class":761},"(), ",[748,4647,4648],{"class":959},"'avatar_url'",[748,4650,4651],{"class":761},", $result[",[748,4653,3893],{"class":959},[748,4655,2331],{"class":761},[748,4657,4658],{"class":750,"line":86},[748,4659,1162],{"class":761},[724,4661],{},[727,4663,4665],{"id":4664},"middleware","Middleware",[1056,4667,4669],{"id":4668},"authmiddleware","AuthMiddleware",[701,4671,4672,4673,4676],{},"Checks user capabilities before allowing the request to proceed. Calls ",[705,4674,4675],{},"wp_die()"," with 403 on failure.",[739,4678,4680],{"className":741,"code":4679,"language":743,"meta":744,"style":744},"use WPZylos\\Framework\\Security\\Middleware\\AuthMiddleware;\n\n$gate = $app->make(Gate::class);\n\n\u002F\u002F Require a single capability\n$middleware = new AuthMiddleware($gate, 'manage_options');\n$middleware->handle($request, $next);\n\n\u002F\u002F Require ANY of multiple capabilities\n$middleware = AuthMiddleware::any($gate, ['edit_posts', 'upload_files']);\n$middleware->handle($request, $next);\n\n\u002F\u002F Require ALL of multiple capabilities\n$middleware = AuthMiddleware::all($gate, ['edit_posts', 'publish_posts']);\n$middleware->handle($request, $next);\n",[705,4681,4682,4691,4695,4715,4719,4724,4744,4756,4760,4765,4790,4800,4804,4809,4832],{"__ignoreMap":744},[748,4683,4684,4686,4689],{"class":750,"line":6},[748,4685,754],{"class":753},[748,4687,4688],{"class":757}," WPZylos\\Framework\\Security\\Middleware\\AuthMiddleware",[748,4690,762],{"class":761},[748,4692,4693],{"class":750,"line":29},[748,4694,804],{"emptyLinePlaceholder":803},[748,4696,4697,4699,4701,4703,4705,4707,4709,4711,4713],{"class":750,"line":14},[748,4698,1559],{"class":761},[748,4700,818],{"class":753},[748,4702,821],{"class":761},[748,4704,824],{"class":753},[748,4706,828],{"class":827},[748,4708,831],{"class":761},[748,4710,858],{"class":757},[748,4712,837],{"class":753},[748,4714,840],{"class":761},[748,4716,4717],{"class":750,"line":18},[748,4718,804],{"emptyLinePlaceholder":803},[748,4720,4721],{"class":750,"line":70},[748,4722,4723],{"class":809},"\u002F\u002F Require a single capability\n",[748,4725,4726,4729,4731,4734,4737,4740,4742],{"class":750,"line":74},[748,4727,4728],{"class":761},"$middleware ",[748,4730,818],{"class":753},[748,4732,4733],{"class":753}," new",[748,4735,4736],{"class":757}," AuthMiddleware",[748,4738,4739],{"class":761},"($gate, ",[748,4741,1637],{"class":959},[748,4743,840],{"class":761},[748,4745,4746,4749,4751,4753],{"class":750,"line":78},[748,4747,4748],{"class":761},"$middleware",[748,4750,824],{"class":753},[748,4752,3807],{"class":827},[748,4754,4755],{"class":761},"($request, $next);\n",[748,4757,4758],{"class":750,"line":82},[748,4759,804],{"emptyLinePlaceholder":803},[748,4761,4762],{"class":750,"line":86},[748,4763,4764],{"class":809},"\u002F\u002F Require ANY of multiple capabilities\n",[748,4766,4767,4769,4771,4773,4776,4779,4782,4784,4786,4788],{"class":750,"line":90},[748,4768,4728],{"class":761},[748,4770,818],{"class":753},[748,4772,4736],{"class":757},[748,4774,4775],{"class":753},"::",[748,4777,4778],{"class":827},"any",[748,4780,4781],{"class":761},"($gate, [",[748,4783,1601],{"class":959},[748,4785,1356],{"class":761},[748,4787,2208],{"class":959},[748,4789,2331],{"class":761},[748,4791,4792,4794,4796,4798],{"class":750,"line":887},[748,4793,4748],{"class":761},[748,4795,824],{"class":753},[748,4797,3807],{"class":827},[748,4799,4755],{"class":761},[748,4801,4802],{"class":750,"line":910},[748,4803,804],{"emptyLinePlaceholder":803},[748,4805,4806],{"class":750,"line":933},[748,4807,4808],{"class":809},"\u002F\u002F Require ALL of multiple capabilities\n",[748,4810,4811,4813,4815,4817,4819,4822,4824,4826,4828,4830],{"class":750,"line":938},[748,4812,4728],{"class":761},[748,4814,818],{"class":753},[748,4816,4736],{"class":757},[748,4818,4775],{"class":753},[748,4820,4821],{"class":827},"all",[748,4823,4781],{"class":761},[748,4825,1601],{"class":959},[748,4827,1356],{"class":761},[748,4829,2249],{"class":959},[748,4831,2331],{"class":761},[748,4833,4834,4836,4838,4840],{"class":750,"line":944},[748,4835,4748],{"class":761},[748,4837,824],{"class":753},[748,4839,3807],{"class":827},[748,4841,4755],{"class":761},[1056,4843,4845],{"id":4844},"noncemiddleware","NonceMiddleware",[701,4847,4848,4849,4852],{},"Verifies CSRF nonce before allowing the request to proceed. Extracts the nonce from POST, GET, or a request object's ",[705,4850,4851],{},"input()"," method.",[739,4854,4856],{"className":741,"code":4855,"language":743,"meta":744,"style":744},"use WPZylos\\Framework\\Security\\Middleware\\NonceMiddleware;\n\n$nonce = $app->make(Nonce::class);\n\n\u002F\u002F Constructor\n$middleware = new NonceMiddleware($nonce, 'save_settings');\n$middleware->handle($request, $next);\n\n\u002F\u002F Factory method\n$middleware = NonceMiddleware::for($nonce, 'save_settings');\n$middleware->handle($request, $next);\n\n\u002F\u002F Custom field name\n$middleware = NonceMiddleware::for($nonce, 'save_settings', 'my_nonce_field');\n",[705,4857,4858,4867,4871,4891,4895,4900,4918,4928,4932,4937,4956,4966,4970,4975],{"__ignoreMap":744},[748,4859,4860,4862,4865],{"class":750,"line":6},[748,4861,754],{"class":753},[748,4863,4864],{"class":757}," WPZylos\\Framework\\Security\\Middleware\\NonceMiddleware",[748,4866,762],{"class":761},[748,4868,4869],{"class":750,"line":29},[748,4870,804],{"emptyLinePlaceholder":803},[748,4872,4873,4875,4877,4879,4881,4883,4885,4887,4889],{"class":750,"line":14},[748,4874,1069],{"class":761},[748,4876,818],{"class":753},[748,4878,821],{"class":761},[748,4880,824],{"class":753},[748,4882,828],{"class":827},[748,4884,831],{"class":761},[748,4886,834],{"class":757},[748,4888,837],{"class":753},[748,4890,840],{"class":761},[748,4892,4893],{"class":750,"line":18},[748,4894,804],{"emptyLinePlaceholder":803},[748,4896,4897],{"class":750,"line":70},[748,4898,4899],{"class":809},"\u002F\u002F Constructor\n",[748,4901,4902,4904,4906,4908,4911,4914,4916],{"class":750,"line":74},[748,4903,4728],{"class":761},[748,4905,818],{"class":753},[748,4907,4733],{"class":753},[748,4909,4910],{"class":757}," NonceMiddleware",[748,4912,4913],{"class":761},"($nonce, ",[748,4915,1114],{"class":959},[748,4917,840],{"class":761},[748,4919,4920,4922,4924,4926],{"class":750,"line":78},[748,4921,4748],{"class":761},[748,4923,824],{"class":753},[748,4925,3807],{"class":827},[748,4927,4755],{"class":761},[748,4929,4930],{"class":750,"line":82},[748,4931,804],{"emptyLinePlaceholder":803},[748,4933,4934],{"class":750,"line":86},[748,4935,4936],{"class":809},"\u002F\u002F Factory method\n",[748,4938,4939,4941,4943,4945,4947,4950,4952,4954],{"class":750,"line":90},[748,4940,4728],{"class":761},[748,4942,818],{"class":753},[748,4944,4910],{"class":757},[748,4946,4775],{"class":753},[748,4948,4949],{"class":827},"for",[748,4951,4913],{"class":761},[748,4953,1114],{"class":959},[748,4955,840],{"class":761},[748,4957,4958,4960,4962,4964],{"class":750,"line":887},[748,4959,4748],{"class":761},[748,4961,824],{"class":753},[748,4963,3807],{"class":827},[748,4965,4755],{"class":761},[748,4967,4968],{"class":750,"line":910},[748,4969,804],{"emptyLinePlaceholder":803},[748,4971,4972],{"class":750,"line":933},[748,4973,4974],{"class":809},"\u002F\u002F Custom field name\n",[748,4976,4977,4979,4981,4983,4985,4987,4989,4991,4993,4996],{"class":750,"line":938},[748,4978,4728],{"class":761},[748,4980,818],{"class":753},[748,4982,4910],{"class":757},[748,4984,4775],{"class":753},[748,4986,4949],{"class":827},[748,4988,4913],{"class":761},[748,4990,1114],{"class":959},[748,4992,1356],{"class":761},[748,4994,4995],{"class":959},"'my_nonce_field'",[748,4997,840],{"class":761},[724,4999],{},[727,5001,5003],{"id":5002},"escaping-helpers","Escaping Helpers",[701,5005,5006],{},"Global helper functions for escaping output in templates. These are available everywhere once the package is loaded.",[1056,5008,5010],{"id":5009},"html-escaping","HTML Escaping",[739,5012,5014],{"className":741,"code":5013,"language":743,"meta":744,"style":744},"\u003Ch1>\u003C?php echo wpzylos_e($title); ?>\u003C\u002Fh1>\n\u003Cp>\u003C?php echo wpzylos_e($description); ?>\u003C\u002Fp>\n",[705,5015,5016,5043],{"__ignoreMap":744},[748,5017,5018,5020,5022,5025,5027,5030,5033,5036,5039,5041],{"class":750,"line":6},[748,5019,1181],{"class":753},[748,5021,697],{"class":757},[748,5023,5024],{"class":753},">\u003C?",[748,5026,743],{"class":757},[748,5028,5029],{"class":757}," echo",[748,5031,5032],{"class":827}," wpzylos_e",[748,5034,5035],{"class":761},"($title); ",[748,5037,5038],{"class":753},"?>\u003C\u002F",[748,5040,697],{"class":757},[748,5042,1203],{"class":753},[748,5044,5045,5047,5049,5051,5053,5055,5057,5060,5062,5064],{"class":750,"line":29},[748,5046,1181],{"class":753},[748,5048,701],{"class":757},[748,5050,5024],{"class":753},[748,5052,743],{"class":757},[748,5054,5029],{"class":757},[748,5056,5032],{"class":827},[748,5058,5059],{"class":761},"($description); ",[748,5061,5038],{"class":753},[748,5063,701],{"class":757},[748,5065,1203],{"class":753},[1056,5067,5069],{"id":5068},"attribute-escaping","Attribute Escaping",[739,5071,5073],{"className":741,"code":5072,"language":743,"meta":744,"style":744},"\u003Cinput type=\"text\" value=\"\u003C?php echo wpzylos_ea($value); ?>\">\n\u003Cdiv class=\"\u003C?php echo wpzylos_ea($cssClass); ?>\">\n",[705,5074,5075,5103],{"__ignoreMap":744},[748,5076,5077,5079,5081,5083,5085,5088,5090,5092,5095,5098,5101],{"class":750,"line":6},[748,5078,1181],{"class":753},[748,5080,1265],{"class":757},[748,5082,1268],{"class":757},[748,5084,818],{"class":753},[748,5086,5087],{"class":959},"\"text\"",[748,5089,1284],{"class":757},[748,5091,818],{"class":753},[748,5093,5094],{"class":959},"\"\u003C?php echo wpzylos_ea(",[748,5096,5097],{"class":761},"$value",[748,5099,5100],{"class":959},"); ?>\"",[748,5102,1203],{"class":753},[748,5104,5105,5107,5110,5113,5115,5118,5120],{"class":750,"line":29},[748,5106,1181],{"class":753},[748,5108,5109],{"class":757},"div",[748,5111,5112],{"class":753}," class=",[748,5114,5094],{"class":959},[748,5116,5117],{"class":761},"$cssClass",[748,5119,5100],{"class":959},[748,5121,1203],{"class":753},[1056,5123,5125],{"id":5124},"url-escaping","URL Escaping",[739,5127,5129],{"className":741,"code":5128,"language":743,"meta":744,"style":744},"\u003Ca href=\"\u003C?php echo wpzylos_eu($link); ?>\">Click here\u003C\u002Fa>\n\u003Cimg src=\"\u003C?php echo wpzylos_eu($imageUrl); ?>\" alt=\"\">\n",[705,5130,5131,5165],{"__ignoreMap":744},[748,5132,5133,5135,5138,5141,5143,5146,5149,5151,5153,5156,5159,5161,5163],{"class":750,"line":6},[748,5134,1181],{"class":753},[748,5136,5137],{"class":757},"a",[748,5139,5140],{"class":757}," href",[748,5142,818],{"class":753},[748,5144,5145],{"class":959},"\"\u003C?php echo wpzylos_eu(",[748,5147,5148],{"class":761},"$link",[748,5150,5100],{"class":959},[748,5152,1308],{"class":753},[748,5154,5155],{"class":757},"Click",[748,5157,5158],{"class":757}," here",[748,5160,1314],{"class":753},[748,5162,5137],{"class":757},[748,5164,1203],{"class":753},[748,5166,5167,5169,5172,5175,5177,5179,5182,5184,5187,5189,5192],{"class":750,"line":29},[748,5168,1181],{"class":753},[748,5170,5171],{"class":757},"img",[748,5173,5174],{"class":757}," src",[748,5176,818],{"class":753},[748,5178,5145],{"class":959},[748,5180,5181],{"class":761},"$imageUrl",[748,5183,5100],{"class":959},[748,5185,5186],{"class":757}," alt",[748,5188,818],{"class":753},[748,5190,5191],{"class":959},"\"\"",[748,5193,1203],{"class":753},[1056,5195,5197],{"id":5196},"javascript-escaping","JavaScript Escaping",[739,5199,5201],{"className":741,"code":5200,"language":743,"meta":744,"style":744},"\u003Cscript>\n    var message = '\u003C?php echo wpzylos_ej($message); ?>';\n\u003C\u002Fscript>\n",[705,5202,5203,5212,5228],{"__ignoreMap":744},[748,5204,5205,5207,5210],{"class":750,"line":6},[748,5206,1181],{"class":753},[748,5208,5209],{"class":757},"script",[748,5211,1203],{"class":753},[748,5213,5214,5217,5220,5223,5226],{"class":750,"line":29},[748,5215,5216],{"class":753},"    var",[748,5218,5219],{"class":757}," message",[748,5221,5222],{"class":753}," =",[748,5224,5225],{"class":959}," '\u003C?php echo wpzylos_ej($message); ?>'",[748,5227,762],{"class":761},[748,5229,5230,5232,5234],{"class":750,"line":14},[748,5231,1314],{"class":753},[748,5233,5209],{"class":757},[748,5235,1203],{"class":753},[1056,5237,5239],{"id":5238},"html-filtering","HTML Filtering",[739,5241,5243],{"className":741,"code":5242,"language":743,"meta":744,"style":744},"\u002F\u002F Allow post-level HTML tags (default)\n\u003C?php echo wpzylos_kses($userContent); ?>\n\n\u002F\u002F Allow only data-level HTML tags\n\u003C?php echo wpzylos_kses($widgetContent, 'data'); ?>\n\n\u002F\u002F Strip all HTML\n\u003C?php echo wpzylos_kses($rawInput, 'strip'); ?>\n",[705,5244,5245,5250,5267,5271,5276,5296,5300,5305],{"__ignoreMap":744},[748,5246,5247],{"class":750,"line":6},[748,5248,5249],{"class":809},"\u002F\u002F Allow post-level HTML tags (default)\n",[748,5251,5252,5255,5257,5259,5262,5265],{"class":750,"line":29},[748,5253,5254],{"class":753},"\u003C?",[748,5256,743],{"class":757},[748,5258,5029],{"class":757},[748,5260,5261],{"class":827}," wpzylos_kses",[748,5263,5264],{"class":761},"($userContent); ",[748,5266,4500],{"class":753},[748,5268,5269],{"class":750,"line":14},[748,5270,804],{"emptyLinePlaceholder":803},[748,5272,5273],{"class":750,"line":18},[748,5274,5275],{"class":809},"\u002F\u002F Allow only data-level HTML tags\n",[748,5277,5278,5280,5282,5284,5286,5289,5292,5294],{"class":750,"line":70},[748,5279,5254],{"class":753},[748,5281,743],{"class":757},[748,5283,5029],{"class":757},[748,5285,5261],{"class":827},[748,5287,5288],{"class":761},"($widgetContent, ",[748,5290,5291],{"class":959},"'data'",[748,5293,1249],{"class":761},[748,5295,4500],{"class":753},[748,5297,5298],{"class":750,"line":74},[748,5299,804],{"emptyLinePlaceholder":803},[748,5301,5302],{"class":750,"line":78},[748,5303,5304],{"class":809},"\u002F\u002F Strip all HTML\n",[748,5306,5307,5309,5311,5313,5315,5318,5321,5323],{"class":750,"line":82},[748,5308,5254],{"class":753},[748,5310,743],{"class":757},[748,5312,5029],{"class":757},[748,5314,5261],{"class":827},[748,5316,5317],{"class":761},"($rawInput, ",[748,5319,5320],{"class":959},"'strip'",[748,5322,1249],{"class":761},[748,5324,4500],{"class":753},[1056,5326,5328],{"id":5327},"json-embedding","JSON Embedding",[739,5330,5332],{"className":741,"code":5331,"language":743,"meta":744,"style":744},"\u003Cscript>\n    var config = \u003C?php echo wpzylos_e_json($configArray); ?>;\n\u003C\u002Fscript>\n",[705,5333,5334,5342,5369],{"__ignoreMap":744},[748,5335,5336,5338,5340],{"class":750,"line":6},[748,5337,1181],{"class":753},[748,5339,5209],{"class":757},[748,5341,1203],{"class":753},[748,5343,5344,5346,5349,5351,5354,5356,5358,5361,5364,5367],{"class":750,"line":29},[748,5345,5216],{"class":753},[748,5347,5348],{"class":757}," config",[748,5350,5222],{"class":753},[748,5352,5353],{"class":753}," \u003C?",[748,5355,743],{"class":757},[748,5357,5029],{"class":757},[748,5359,5360],{"class":827}," wpzylos_e_json",[748,5362,5363],{"class":761},"($configArray); ",[748,5365,5366],{"class":753},"?>",[748,5368,762],{"class":761},[748,5370,5371,5373,5375],{"class":750,"line":14},[748,5372,1314],{"class":753},[748,5374,5209],{"class":757},[748,5376,1203],{"class":753},[701,5378,5379,5380,5383,5384,5387,5388,5391],{},"The JSON is encoded with ",[705,5381,5382],{},"JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP"," flags by default, making it safe for embedding in HTML ",[705,5385,5386],{},"\u003Cscript>"," tags. Throws ",[705,5389,5390],{},"\\JsonException"," on encoding failure.",[5393,5394,5395],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":744,"searchDepth":29,"depth":29,"links":5397},[5398,5399,5405,5413,5421,5429,5438,5442],{"id":729,"depth":29,"text":730},{"id":1047,"depth":29,"text":1048,"children":5400},[5401,5402,5403,5404],{"id":1058,"depth":14,"text":1059},{"id":1165,"depth":14,"text":1166},{"id":1373,"depth":14,"text":1374},{"id":1450,"depth":14,"text":1451},{"id":1539,"depth":29,"text":1540,"children":5406},[5407,5408,5409,5410,5411,5412],{"id":1548,"depth":14,"text":1549},{"id":1694,"depth":14,"text":1695},{"id":1896,"depth":14,"text":1897},{"id":1993,"depth":14,"text":1994},{"id":2092,"depth":14,"text":2093},{"id":2152,"depth":14,"text":2153},{"id":2269,"depth":29,"text":2270,"children":5414},[5415,5416,5417,5418,5419],{"id":2278,"depth":14,"text":2279},{"id":2585,"depth":14,"text":2586},{"id":2683,"depth":14,"text":2684},{"id":2780,"depth":14,"text":2781},{"id":2869,"depth":14,"text":5420},"Bulk Sanitization with sanitizeMany",{"id":3063,"depth":29,"text":3064,"children":5422},[5423,5424,5425,5427,5428],{"id":3072,"depth":14,"text":3073},{"id":3236,"depth":14,"text":3237},{"id":3382,"depth":14,"text":5426},"Using attempt() with Callbacks",{"id":3561,"depth":14,"text":3562},{"id":3655,"depth":14,"text":3656},{"id":3753,"depth":29,"text":3754,"children":5430},[5431,5432,5433,5434,5435,5436,5437],{"id":3762,"depth":14,"text":3763},{"id":3922,"depth":14,"text":3923},{"id":4062,"depth":14,"text":4063},{"id":4174,"depth":14,"text":4175},{"id":4261,"depth":14,"text":4262},{"id":4367,"depth":14,"text":4368},{"id":4433,"depth":14,"text":4434},{"id":4664,"depth":29,"text":4665,"children":5439},[5440,5441],{"id":4668,"depth":14,"text":4669},{"id":4844,"depth":14,"text":4845},{"id":5002,"depth":29,"text":5003,"children":5443},[5444,5445,5446,5447,5448,5449],{"id":5009,"depth":14,"text":5010},{"id":5068,"depth":14,"text":5069},{"id":5124,"depth":14,"text":5125},{"id":5196,"depth":14,"text":5197},{"id":5238,"depth":14,"text":5239},{"id":5327,"depth":14,"text":5328},"This guide covers all security services provided by the wpzylos-security package with practical examples.","md",{},{"title":258,"description":5450},"docs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fusage","vX7qSKMt40glY3HGF2hHtk1DxAbuZ5jVjWl4VoyOW-8",[5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5613,5614,5615,5616,5617,5618,5619,5620,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760,5761,5762,5767,5771],{"path":10,"title":5,"sectionKey":7,"sectionOrder":6,"itemOrder":6,"packageName":744,"depth":6},{"path":12,"title":13,"sectionKey":7,"sectionOrder":6,"itemOrder":14,"packageName":744,"depth":29},{"path":16,"title":17,"sectionKey":7,"sectionOrder":6,"itemOrder":18,"packageName":744,"depth":29},{"path":20,"title":21,"sectionKey":7,"sectionOrder":6,"itemOrder":22,"packageName":744,"depth":29},{"path":24,"title":25,"sectionKey":7,"sectionOrder":6,"itemOrder":22,"packageName":744,"depth":29},{"path":33,"title":34,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":36,"title":37,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":39,"title":40,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":42,"title":43,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":45,"title":46,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":48,"title":49,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":744,"depth":29},{"path":58,"title":59,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5469,"depth":29},"wpzylos-assets",{"path":61,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5469,"depth":14},{"path":64,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5469,"depth":14},{"path":66,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5469,"depth":14},{"path":68,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5469,"depth":14},{"path":72,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5469,"depth":14},{"path":76,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5469,"depth":14},{"path":80,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5469,"depth":14},{"path":84,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5469,"depth":14},{"path":88,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5469,"depth":14},{"path":93,"title":94,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5480,"depth":29},"wpzylos-cli-core",{"path":96,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5480,"depth":14},{"path":98,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5480,"depth":14},{"path":100,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5480,"depth":14},{"path":102,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5480,"depth":14},{"path":104,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5480,"depth":14},{"path":106,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5480,"depth":14},{"path":108,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5480,"depth":14},{"path":110,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5480,"depth":14},{"path":113,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5480,"depth":14},{"path":116,"title":117,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5491,"depth":29},"wpzylos-cli-devtool",{"path":119,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5491,"depth":14},{"path":121,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5491,"depth":14},{"path":123,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5491,"depth":14},{"path":125,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5491,"depth":14},{"path":127,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5491,"depth":14},{"path":129,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5491,"depth":14},{"path":131,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5491,"depth":14},{"path":133,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5491,"depth":14},{"path":135,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5491,"depth":14},{"path":138,"title":139,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5502,"depth":29},"wpzylos-config",{"path":141,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5502,"depth":14},{"path":143,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5502,"depth":14},{"path":145,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5502,"depth":14},{"path":147,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5502,"depth":14},{"path":149,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5502,"depth":14},{"path":151,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5502,"depth":14},{"path":153,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5502,"depth":14},{"path":155,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5502,"depth":14},{"path":157,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5502,"depth":14},{"path":160,"title":161,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5513,"depth":29},"wpzylos-container",{"path":163,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5513,"depth":14},{"path":165,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5513,"depth":14},{"path":167,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5513,"depth":14},{"path":169,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5513,"depth":14},{"path":171,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5513,"depth":14},{"path":173,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5513,"depth":14},{"path":175,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5513,"depth":14},{"path":177,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5513,"depth":14},{"path":179,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5513,"depth":14},{"path":182,"title":183,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5524,"depth":29},"wpzylos-core",{"path":185,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5524,"depth":14},{"path":187,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5524,"depth":14},{"path":189,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5524,"depth":14},{"path":191,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5524,"depth":14},{"path":193,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5524,"depth":14},{"path":195,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5524,"depth":14},{"path":197,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5524,"depth":14},{"path":199,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5524,"depth":14},{"path":201,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5524,"depth":14},{"path":204,"title":205,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5535,"depth":29},"wpzylos-database",{"path":207,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5535,"depth":14},{"path":209,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5535,"depth":14},{"path":211,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5535,"depth":14},{"path":213,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5535,"depth":14},{"path":215,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5535,"depth":14},{"path":217,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5535,"depth":14},{"path":219,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5535,"depth":14},{"path":221,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5535,"depth":14},{"path":223,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5535,"depth":14},{"path":226,"title":227,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5546,"depth":29},"wpzylos-events",{"path":229,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5546,"depth":14},{"path":231,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5546,"depth":14},{"path":233,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5546,"depth":14},{"path":235,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5546,"depth":14},{"path":237,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5546,"depth":14},{"path":239,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5546,"depth":14},{"path":241,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5546,"depth":14},{"path":243,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5546,"depth":14},{"path":245,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5546,"depth":14},{"path":248,"title":249,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5557,"depth":29},"wpzylos-hooks",{"path":251,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5557,"depth":14},{"path":253,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5557,"depth":14},{"path":255,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5557,"depth":14},{"path":257,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5557,"depth":14},{"path":260,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5557,"depth":14},{"path":262,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5557,"depth":14},{"path":264,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5557,"depth":14},{"path":266,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5557,"depth":14},{"path":268,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5557,"depth":14},{"path":271,"title":272,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5568,"depth":29},"wpzylos-http",{"path":274,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5568,"depth":14},{"path":276,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5568,"depth":14},{"path":278,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5568,"depth":14},{"path":280,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5568,"depth":14},{"path":282,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5568,"depth":14},{"path":284,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5568,"depth":14},{"path":286,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5568,"depth":14},{"path":288,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5568,"depth":14},{"path":290,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5568,"depth":14},{"path":293,"title":294,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5579,"depth":29},"wpzylos-i18n",{"path":296,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5579,"depth":14},{"path":298,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5579,"depth":14},{"path":300,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5579,"depth":14},{"path":302,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5579,"depth":14},{"path":304,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5579,"depth":14},{"path":306,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5579,"depth":14},{"path":308,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5579,"depth":14},{"path":310,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5579,"depth":14},{"path":312,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5579,"depth":14},{"path":315,"title":316,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5590,"depth":29},"wpzylos-logger",{"path":318,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5590,"depth":14},{"path":320,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5590,"depth":14},{"path":322,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5590,"depth":14},{"path":324,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5590,"depth":14},{"path":326,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5590,"depth":14},{"path":328,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5590,"depth":14},{"path":330,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5590,"depth":14},{"path":332,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5590,"depth":14},{"path":334,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5590,"depth":14},{"path":337,"title":338,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5601,"depth":29},"wpzylos-mail",{"path":340,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5601,"depth":14},{"path":342,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5601,"depth":14},{"path":344,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5601,"depth":14},{"path":346,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5601,"depth":14},{"path":348,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5601,"depth":14},{"path":350,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5601,"depth":14},{"path":352,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5601,"depth":14},{"path":354,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5601,"depth":14},{"path":356,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5601,"depth":14},{"path":359,"title":360,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5612,"depth":29},"wpzylos-mcp",{"path":362,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5612,"depth":14},{"path":364,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5612,"depth":14},{"path":366,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5612,"depth":14},{"path":368,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5612,"depth":14},{"path":370,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5612,"depth":14},{"path":372,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5612,"depth":14},{"path":374,"title":375,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":5612,"depth":14},{"path":378,"title":379,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5621,"depth":29},"wpzylos-migrations",{"path":381,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5621,"depth":14},{"path":383,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5621,"depth":14},{"path":385,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5621,"depth":14},{"path":387,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5621,"depth":14},{"path":389,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5621,"depth":14},{"path":391,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5621,"depth":14},{"path":393,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5621,"depth":14},{"path":395,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5621,"depth":14},{"path":397,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5621,"depth":14},{"path":400,"title":401,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5632,"depth":29},"wpzylos-model",{"path":403,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5632,"depth":14},{"path":405,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5632,"depth":14},{"path":407,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5632,"depth":14},{"path":409,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5632,"depth":14},{"path":411,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5632,"depth":14},{"path":413,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5632,"depth":14},{"path":415,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5632,"depth":14},{"path":417,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5632,"depth":14},{"path":419,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5632,"depth":14},{"path":422,"title":423,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5643,"depth":29},"wpzylos-notification",{"path":425,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5643,"depth":14},{"path":427,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5643,"depth":14},{"path":429,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5643,"depth":14},{"path":431,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5643,"depth":14},{"path":433,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5643,"depth":14},{"path":435,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5643,"depth":14},{"path":437,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5643,"depth":14},{"path":439,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5643,"depth":14},{"path":441,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5643,"depth":14},{"path":444,"title":445,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5654,"depth":29},"wpzylos-queue",{"path":447,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5654,"depth":14},{"path":449,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5654,"depth":14},{"path":451,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5654,"depth":14},{"path":453,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5654,"depth":14},{"path":455,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5654,"depth":14},{"path":457,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5654,"depth":14},{"path":459,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5654,"depth":14},{"path":461,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5654,"depth":14},{"path":463,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5654,"depth":14},{"path":466,"title":467,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5665,"depth":29},"wpzylos-requirements",{"path":469,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5665,"depth":14},{"path":471,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5665,"depth":14},{"path":473,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5665,"depth":14},{"path":475,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5665,"depth":14},{"path":477,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5665,"depth":14},{"path":479,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5665,"depth":14},{"path":481,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5665,"depth":14},{"path":483,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5665,"depth":14},{"path":485,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5665,"depth":14},{"path":488,"title":489,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5676,"depth":29},"wpzylos-routing",{"path":491,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5676,"depth":14},{"path":493,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5676,"depth":14},{"path":495,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5676,"depth":14},{"path":497,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5676,"depth":14},{"path":499,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5676,"depth":14},{"path":501,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5676,"depth":14},{"path":503,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5676,"depth":14},{"path":505,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5676,"depth":14},{"path":507,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5676,"depth":14},{"path":509,"title":510,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":5676,"depth":14},{"path":512,"title":513,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":5676,"depth":14},{"path":516,"title":517,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5689,"depth":29},"wpzylos-scaffold",{"path":519,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5689,"depth":14},{"path":521,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5689,"depth":14},{"path":523,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5689,"depth":14},{"path":525,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5689,"depth":14},{"path":527,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5689,"depth":14},{"path":529,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5689,"depth":14},{"path":531,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5689,"depth":14},{"path":533,"title":534,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5689,"depth":14},{"path":536,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5689,"depth":14},{"path":538,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5689,"depth":14},{"path":540,"title":541,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":5689,"depth":14},{"path":543,"title":544,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":5689,"depth":14},{"path":547,"title":548,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5703,"depth":29},"wpzylos-scheduler",{"path":550,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5703,"depth":14},{"path":552,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5703,"depth":14},{"path":554,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5703,"depth":14},{"path":556,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5703,"depth":14},{"path":558,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5703,"depth":14},{"path":560,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5703,"depth":14},{"path":562,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5703,"depth":14},{"path":564,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5703,"depth":14},{"path":566,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5703,"depth":14},{"path":569,"title":570,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":707,"depth":29},{"path":572,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":707,"depth":14},{"path":574,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":707,"depth":14},{"path":576,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":707,"depth":14},{"path":578,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":707,"depth":14},{"path":580,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":707,"depth":14},{"path":582,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":707,"depth":14},{"path":584,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":707,"depth":14},{"path":586,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":707,"depth":14},{"path":589,"title":590,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5723,"depth":29},"wpzylos-validation",{"path":592,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5723,"depth":14},{"path":594,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5723,"depth":14},{"path":596,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5723,"depth":14},{"path":598,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5723,"depth":14},{"path":600,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5723,"depth":14},{"path":602,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5723,"depth":14},{"path":604,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5723,"depth":14},{"path":606,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5723,"depth":14},{"path":608,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5723,"depth":14},{"path":611,"title":612,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5734,"depth":29},"wpzylos-views",{"path":614,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5734,"depth":14},{"path":616,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5734,"depth":14},{"path":618,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5734,"depth":14},{"path":620,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5734,"depth":14},{"path":622,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5734,"depth":14},{"path":624,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5734,"depth":14},{"path":626,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5734,"depth":14},{"path":628,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5734,"depth":14},{"path":630,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5734,"depth":14},{"path":633,"title":634,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":5745,"depth":29},"wpzylos-wp-cli",{"path":636,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":5745,"depth":14},{"path":638,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":5745,"depth":14},{"path":640,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":5745,"depth":14},{"path":642,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":5745,"depth":14},{"path":644,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":5745,"depth":14},{"path":646,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":5745,"depth":14},{"path":648,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":5745,"depth":14},{"path":650,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":5745,"depth":14},{"path":652,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":5745,"depth":14},{"path":658,"title":659,"sectionKey":655,"sectionOrder":18,"itemOrder":6,"packageName":744,"depth":6},{"path":661,"title":544,"sectionKey":655,"sectionOrder":18,"itemOrder":22,"packageName":744,"depth":29},{"path":667,"title":668,"sectionKey":664,"sectionOrder":70,"itemOrder":29,"packageName":744,"depth":29},{"path":674,"title":675,"sectionKey":671,"sectionOrder":74,"itemOrder":29,"packageName":744,"depth":29},{"path":677,"title":678,"sectionKey":671,"sectionOrder":74,"itemOrder":22,"packageName":744,"depth":29},{"path":680,"title":681,"sectionKey":671,"sectionOrder":74,"itemOrder":22,"packageName":744,"depth":29},{"path":688,"title":689,"sectionKey":685,"sectionOrder":78,"itemOrder":29,"packageName":744,"depth":29},{"path":5763,"title":5764,"sectionKey":5765,"sectionOrder":5766,"itemOrder":90,"packageName":744,"depth":6},"\u002Fdocs\u002Flatest\u002Ftroubleshooting","System Troubleshooting","troubleshooting",99,{"path":5768,"title":5769,"sectionKey":5770,"sectionOrder":5766,"itemOrder":22,"packageName":744,"depth":6},"\u002Fdocs\u002Flatest\u002Frelease-checklist","Release Checklist","release-checklist",{"path":5772,"title":5773,"sectionKey":5774,"sectionOrder":5766,"itemOrder":22,"packageName":744,"depth":6},"\u002Fdocs\u002Flatest\u002Frules","WPZylos Framework Rules","rules",1784547698300]