{ "author": "", "category": "Network", "extensionNamespace": "", "fullName": "THNK framework - Core", "helpPath": "https://thnk.cloud/docs/getting-started/", "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODUuMjg1OThtbSIKICAgaGVpZ2h0PSI5MC43MDg3MDJtbSIKICAgdmlld0JveD0iMCAwIDg1LjI4NTk4IDkwLjcwODcwMiIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnNDcwMiIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi41ICgyMDYwZWMxZjlmLCAyMDIwLTA0LTA4KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iTG9nby1UcmFuc3BhcmVudC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM0Njk2IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIwLjM1IgogICAgIGlua3NjYXBlOmN4PSItMzgwLjI1ODIzIgogICAgIGlua3NjYXBlOmN5PSIyMzkuOTg5NTYiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNTMiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgLz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE0Njk5Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzUuMjIwMTA4LC0xMjEuNjIxODcpIj4KICAgIDxnCiAgICAgICBpZD0iZzMzNjItMy0xLTIiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjEzMjI4NjcsMCwwLDEuMTMyMjg2Nyw1MTMuNTQyNTcsLTE3MzIuMzQ5OCkiCiAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9QaWN0dXJlcy9USE5LL1BORy9CYW5uZXIvQmFubmVyLVR5cGUtMkItUGxhaW4ucG5nIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjEzMS42MjQxNiIKICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxMzEuNjI0MTYiPgogICAgICA8ZwogICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjIwNTE5NzQsMzUuNzE0ODUxKSIKICAgICAgICAgaWQ9ImczMzI4LTUtNC02Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgIHNvZGlwb2RpOm9wZW49InRydWUiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL2hvbWUvbWlkaGlsL0RvY3VtZW50cy9USE5LLVY1LjEucG5nIgogICAgICAgICAgIGQ9Im0gLTEyNzcuMjIzNCwtMTA0MS4wNDU2IGEgNDMuMjc5OTE1LDE0LjQyNjY0MiAwIDAgMSAtMTQuODQ3NywxMi4yNTQ1IDQzLjI3OTkxNSwxNC40MjY2NDIgMCAwIDEgLTM4LjU1NTQsMy4wODE5IgogICAgICAgICAgIHNvZGlwb2RpOmVuZD0iMS44MTEyMzMiCiAgICAgICAgICAgc29kaXBvZGk6c3RhcnQ9IjYuMTkxMjI2MSIKICAgICAgICAgICBzb2RpcG9kaTpyeT0iMTQuNDI2NjQyIgogICAgICAgICAgIHNvZGlwb2RpOnJ4PSI0My4yNzk5MTUiCiAgICAgICAgICAgc29kaXBvZGk6Y3k9Ii0xMDM5LjcyMDgiCiAgICAgICAgICAgc29kaXBvZGk6Y3g9Ii0xMzIwLjMyMDQiCiAgICAgICAgICAgc29kaXBvZGk6dHlwZT0iYXJjIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzgzMTQ2MzMsLTAuNjIxODM3NDYsLTAuNjIxODM3NDYsLTAuNzgzMTQ2MzMsMCwwKSIKICAgICAgICAgICBpZD0icGF0aDEzMTYtNy04LTYtNy0wLTgzLTktOC01LTItNy02LTk3LTItNy02LTkyLTEiCiAgICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMjEyNTI5O3N0cm9rZS13aWR0aDo4Ljg2OTkzMjE3O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBzb2RpcG9kaTpvcGVuPSJ0cnVlIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9Eb2N1bWVudHMvVEhOSy1WNS4xLnBuZyIKICAgICAgICAgICBkPSJtIDEyMzMuMTUyLDg3OC4zNTY4NCBhIDYzLjYzOTkyMywyMi40MzEzODUgMCAwIDEgMzcuMTA4OSwxNS43NjE5NyA2My42Mzk5MjMsMjIuNDMxMzg1IDAgMCAxIC0xNC42ODk3LDE5LjgxNzA1IgogICAgICAgICAgIHNvZGlwb2RpOmVuZD0iMC43Mjk2ODIwOSIKICAgICAgICAgICBzb2RpcG9kaTpzdGFydD0iNS4xMTYzOTM5IgogICAgICAgICAgIHNvZGlwb2RpOnJ5PSIyMi40MzEzODUiCiAgICAgICAgICAgc29kaXBvZGk6cng9IjYzLjYzOTkyMyIKICAgICAgICAgICBzb2RpcG9kaTpjeT0iODk4Ljk4MjM2IgogICAgICAgICAgIHNvZGlwb2RpOmN4PSIxMjA4LjEzNDkiCiAgICAgICAgICAgc29kaXBvZGk6dHlwZT0iYXJjIgogICAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjY5OTc4MjkyLDAuNzE0MzU1NTYsMC41MjU0NzIyNiwwLjg1MDgxMDczLDAsMCkiCiAgICAgICAgICAgaWQ9InBhdGgxMzE2LTctOC02LTctMC04My05LTAtOS0yNC02LTUtMC01LTUtOC0yLTAtMCIKICAgICAgICAgICBzdHlsZT0ib3BhY2l0eToxO3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMyMTI1Mjk7c3Ryb2tlLXdpZHRoOjguMDQyOTM4MjM7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8Y2lyY2xlCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL2hvbWUvbWlkaGlsL0RvY3VtZW50cy9USE5LLVY1LjEucG5nIgogICAgICAgICAgIHI9IjMzLjU1OTM5NSIKICAgICAgICAgICBjeT0iMTY0MC4yNTI3IgogICAgICAgICAgIGN4PSItMzgwLjg4MjA1IgogICAgICAgICAgIGlkPSJwYXRoMjQzOS04LTQtMC0wLTQtNy04LTMtNy0yLTktNi02IgogICAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6I2Y4ZjlmYTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6OC4yNjQ3OTM0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBzb2RpcG9kaTpvcGVuPSJ0cnVlIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9Eb2N1bWVudHMvVEhOSy1WNS5wbmciCiAgICAgICAgICAgZD0ibSAtMTM1Ni40MTIsLTEwNDcuNDY5NSBhIDQzLjI3OTkxNSwxNC40MjY2NDIgMCAwIDEgMjguODk5NywtOC4xNTg5IgogICAgICAgICAgIHNvZGlwb2RpOmVuZD0iNC40NjI1MTQyIgogICAgICAgICAgIHNvZGlwb2RpOnN0YXJ0PSIzLjU1NjgyNDMiCiAgICAgICAgICAgc29kaXBvZGk6cnk9IjE0LjQyNjY0MiIKICAgICAgICAgICBzb2RpcG9kaTpyeD0iNDMuMjc5OTE1IgogICAgICAgICAgIHNvZGlwb2RpOmN5PSItMTA0MS42NDk4IgogICAgICAgICAgIHNvZGlwb2RpOmN4PSItMTMxNi44MDk5IgogICAgICAgICAgIHNvZGlwb2RpOnR5cGU9ImFyYyIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjc4MzE0NjMzLC0wLjYyMTgzNzQ2LC0wLjYyMTgzNzQ2LC0wLjc4MzE0NjMzLDAsMCkiCiAgICAgICAgICAgaWQ9InBhdGgxMzE2LTctOC02LTctMC04My05LTYtOC0zNi0zLTgtNC01LTEtOC0xIgogICAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6bm9uZTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzIxMjUyOTtzdHJva2Utd2lkdGg6OC44Njk5MzIxNztzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgc29kaXBvZGk6b3Blbj0idHJ1ZSIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIvaG9tZS9taWRoaWwvRG9jdW1lbnRzL1RITkstVjUucG5nIgogICAgICAgICAgIGQ9Im0gLTE0MjAuODcyMSwtOTYzLjAwMzE5IGEgNDAuMjMxODYxLDEzLjQxMDYyNiAwIDAgMSAxOS45Nzk4LC0xMS43NTEzMiIKICAgICAgICAgICBzb2RpcG9kaTplbmQ9IjQuMTg0OTYyMSIKICAgICAgICAgICBzb2RpcG9kaTpzdGFydD0iMy4xMjk0Mjc5IgogICAgICAgICAgIHNvZGlwb2RpOnJ5PSIxMy40MTA2MjYiCiAgICAgICAgICAgc29kaXBvZGk6cng9IjQwLjIzMTg2MSIKICAgICAgICAgICBzb2RpcG9kaTpjeT0iLTk2My4xNjYzMiIKICAgICAgICAgICBzb2RpcG9kaTpjeD0iLTEzODAuNjQzMiIKICAgICAgICAgICBzb2RpcG9kaTp0eXBlPSJhcmMiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43NDIzNDI1NiwtMC42NzAwMjA1NCwtMC42NzAwMjA1NCwtMC43NDIzNDI1NiwwLDApIgogICAgICAgICAgIGlkPSJwYXRoMTMxNi03LTgtNi03LTAtODMtOS03LTYtMC03LTctOC05LTMtMi05LTUiCiAgICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMjEyNTI5O3N0cm9rZS13aWR0aDo4LjI0NTI1NTQ3O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBzb2RpcG9kaTpvcGVuPSJ0cnVlIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9Eb2N1bWVudHMvVEhOSy1WNS5wbmciCiAgICAgICAgICAgZD0ibSA5NzkuMzA2NzksLTEzODYuODQ4NSBhIDQwLjIzMTg1NywxMy40MTA2MjYgMCAwIDEgMTMuNzA0MDUsLTcuNDQ2NSIKICAgICAgICAgICBzb2RpcG9kaTplbmQ9IjQuMDIzNjAxNSIKICAgICAgICAgICBzb2RpcG9kaTpzdGFydD0iMy4zNjAwNzEiCiAgICAgICAgICAgc29kaXBvZGk6cnk9IjEzLjQxMDYyNiIKICAgICAgICAgICBzb2RpcG9kaTpyeD0iNDAuMjMxODU3IgogICAgICAgICAgIHNvZGlwb2RpOmN5PSItMTM4My45NDE4IgogICAgICAgICAgIHNvZGlwb2RpOmN4PSIxMDE4LjU4MjMiCiAgICAgICAgICAgc29kaXBvZGk6dHlwZT0iYXJjIgogICAgICAgICAgIHRyYW5zZm9ybT0icm90YXRlKDE1OC40NTA0NCkiCiAgICAgICAgICAgaWQ9InBhdGgxMzE2LTctOC02LTctMC04My05LTctMC02LTUtOS03LTItMy05LTQtNy0yLTkiCiAgICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMjEyNTI5O3N0cm9rZS13aWR0aDo4LjI0NTI1NDUyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBzb2RpcG9kaTpvcGVuPSJ0cnVlIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9Eb2N1bWVudHMvVEhOSy1WNS4xLnBuZyIKICAgICAgICAgICBkPSJtIC0xMzA2LjIyNjksLTEwNTIuNjQxNyBhIDQzLjI3OTkxNSwxNC40MjY2NDIgMCAwIDEgMjguNzY3NywxMS4zMjA2IgogICAgICAgICAgIHNvZGlwb2RpOmVuZD0iNi4xMjA0NjA1IgogICAgICAgICAgIHNvZGlwb2RpOnN0YXJ0PSI1LjA0MDMzNjYiCiAgICAgICAgICAgc29kaXBvZGk6cnk9IjE0LjQyNjY0MiIKICAgICAgICAgICBzb2RpcG9kaTpyeD0iNDMuMjc5OTE1IgogICAgICAgICAgIHNvZGlwb2RpOmN5PSItMTAzOC45ODM5IgogICAgICAgICAgIHNvZGlwb2RpOmN4PSItMTMyMC4xNjc0IgogICAgICAgICAgIHNvZGlwb2RpOnR5cGU9ImFyYyIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjc4MzE0NjMzLC0wLjYyMTgzNzQ2LC0wLjYyMTgzNzQ2LC0wLjc4MzE0NjMzLDAsMCkiCiAgICAgICAgICAgaWQ9InBhdGgxMzE2LTctOC02LTctMC04My05LTYtOC0xLTMtMC0xLTQtOS0wLTYtNCIKICAgICAgICAgICBzdHlsZT0ib3BhY2l0eToxO3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMyMTI1Mjk7c3Ryb2tlLXdpZHRoOjguODY5OTMyMTc7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIHNvZGlwb2RpOm9wZW49InRydWUiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL2hvbWUvbWlkaGlsL0RvY3VtZW50cy9USE5LLVY1LnBuZyIKICAgICAgICAgICBkPSJtIC0yMjMuNDA4MDUsLTE2OTguODI1OSBhIDQwLjIzMTg2MSwxMy40MTA2MjYgMCAwIDEgMTQuNjU3NDUsLTEwLjUxNjMiCiAgICAgICAgICAgc29kaXBvZGk6ZW5kPSI0LjAyMzYwMTUiCiAgICAgICAgICAgc29kaXBvZGk6c3RhcnQ9IjMuMTI5NDI3OSIKICAgICAgICAgICBzb2RpcG9kaTpyeT0iMTMuNDEwNjI2IgogICAgICAgICAgIHNvZGlwb2RpOnJ4PSI0MC4yMzE4NjEiCiAgICAgICAgICAgc29kaXBvZGk6Y3k9Ii0xNjk4Ljk4OSIKICAgICAgICAgICBzb2RpcG9kaTpjeD0iLTE4My4xNzkxNyIKICAgICAgICAgICBzb2RpcG9kaTp0eXBlPSJhcmMiCiAgICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC45OTM0NzM1NywwLjExNDA2MjU3LDAuMTE0MDYyNTcsLTAuOTkzNDczNTcsMCwwKSIKICAgICAgICAgICBpZD0icGF0aDEzMTYtNy04LTYtNy0wLTgzLTktNy0wLTEtOC0wLTQtNS04LTUtMC05LTY0LTkiCiAgICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMjEyNTI5O3N0cm9rZS13aWR0aDo4LjI0NTI1NTQ3O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgICAgPGNpcmNsZQogICAgICAgICAgIHI9IjEwLjIyMzUyNCIKICAgICAgICAgICBjeT0iMTYyOS45MjkyIgogICAgICAgICAgIGN4PSItNDAxLjEyMTczIgogICAgICAgICAgIGlkPSJwYXRoNTQ5Ny01LTktOS0yLTMtOS0wIgogICAgICAgICAgIHN0eWxlPSJvcGFjaXR5OjE7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6IzIxMjUyOTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6OC43MjUxODE1ODtzdHJva2UtbGluZWNhcDpzcXVhcmU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL21pZGhpbC9Eb2N1bWVudHMvVEhOSy1WNS4xLnBuZyIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSIxNjkuODU3ODIiIC8+CiAgICAgICAgPGNpcmNsZQogICAgICAgICAgIHI9IjEwLjIyMzUyNCIKICAgICAgICAgICBjeT0iMTYzNC41NDQ0IgogICAgICAgICAgIGN4PSItMzY4LjMzOTYiCiAgICAgICAgICAgaWQ9InBhdGg1NDk3LTYtNS02LTMtMC02LTUtOSIKICAgICAgICAgICBzdHlsZT0ib3BhY2l0eToxO3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOiMyMTI1Mjk7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjguNzI1MTgxNTg7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIvaG9tZS9taWRoaWwvRG9jdW1lbnRzL1RITkstVjUuMS5wbmciCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjE2OS44NTc4MiIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iMTY5Ljg1NzgyIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgc29kaXBvZGk6b3Blbj0idHJ1ZSIKICAgICAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iMTY5Ljg1NzgyIgogICAgICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSIxNjkuODU3ODIiCiAgICAgICAgICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIvaG9tZS9taWRoaWwvRG9jdW1lbnRzL1RITkstVjUuMS5wbmciCiAgICAgICAgICAgZD0ibSAxMjYzLjU0NTUsODg3Ljk0OTg2IGEgNjMuNjM5OTIzLDIyLjQzMTM4NSAwIDAgMSAtMTYuODM5MSwyOC44NzQzNSIKICAgICAgICAgICBzb2RpcG9kaTplbmQ9IjAuOTE5NjYxNDUiCiAgICAgICAgICAgc29kaXBvZGk6c3RhcnQ9IjUuNzY4OTkxNCIKICAgICAgICAgICBzb2RpcG9kaTpyeT0iMjIuNDMxMzg1IgogICAgICAgICAgIHNvZGlwb2RpOnJ4PSI2My42Mzk5MjMiCiAgICAgICAgICAgc29kaXBvZGk6Y3k9Ijg5OC45ODIzNiIKICAgICAgICAgICBzb2RpcG9kaTpjeD0iMTIwOC4xMzQ5IgogICAgICAgICAgIHNvZGlwb2RpOnR5cGU9ImFyYyIKICAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgtMC42OTk3ODI5MiwwLjcxNDM1NTU2LDAuNTI1NDcyMjYsMC44NTA4MTA3MywwLDApIgogICAgICAgICAgIGlkPSJwYXRoMTMxNi03LTgtNi03LTAtODMtOS0wLTktMjQtNi01LTAtNi00LTUtMS0wLTA0LTEiCiAgICAgICAgICAgc3R5bGU9Im9wYWNpdHk6MTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMjEyNTI5O3N0cm9rZS13aWR0aDo4LjA0MjkzODIzO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=", "name": "THNK", "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Videogames/Videogames_online_gaming_games_joystick_connect_globe.svg", "shortDescription": "A framework to build authoritative multiplayer games.", "version": "1.0.0", "description": [ "# The THNK Framework", "", "A framework for building authoritative games with GDevelop. In a single click, you can turn your THNK game multiplayer!", "", "Games made with THNK multiplayer will, through a mix of imposed rules and a rich set of optimisations & performant features, run fast as state-of-the-art multiplayer games.", "", "This - the core THNK extension - allows you to build any game with the authoritative server-client pattern. They will not be multiplayer: by default, all THNK games are single player and will run fine without being connected to anyone else. When/if you want to add multiplayer, THNK servers can be started and connected to in 1 action via the different THNK adapter extensions.", "", "Learn more at https://thnk.cloud/ ;)" ], "tags": [ "multiplayer", "arthuro", "thnk", "thonk", "think", "server", "client", "authoritative", "easy" ], "authorIds": [ "ZgrsWuRTAkXgeuPV9bo0zuEcA2w1" ], "dependencies": [], "eventsFunctions": [ { "fullName": "", "functionType": "Action", "name": "onFirstSceneLoaded", "sentence": "", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": "}// Load THNK library (https://github.com/arthuro555/THNK)\nwindow.THNK=(()=>{var ii=Object.defineProperty;var hn=Object.getOwnPropertyDescriptor;var cn=Object.getOwnPropertyNames;var bn=Object.prototype.hasOwnProperty;var fn=(t,e)=>{for(var i in e)ii(t,i,{get:e[i],enumerable:!0})},un=(t,e,i,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of cn(e))!bn.call(t,a)&&a!==i&&ii(t,a,{get:()=>e[a],enumerable:!(s=hn(e,a))||s.enumerable});return t};var _n=t=>un(ii({},\"__esModule\",{value:!0}),t);var id={};fn(id,{ClientAdapter:()=>td,ServerAdapter:()=>ed,client:()=>ka,players:()=>ba,server:()=>Js,settings:()=>fa});var pn=Object.defineProperty,$e=(t,e)=>{for(var i in e)pn(t,i,{get:e[i],enumerable:!0})},Js={};$e(Js,{events:()=>rr,startServer:()=>nr});var Vt=new Int32Array(2),$i=new Float32Array(Vt.buffer),Qi=new Float64Array(Vt.buffer),De=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,mi;(function(t){t[t.UTF8_BYTES=1]=\"UTF8_BYTES\",t[t.UTF16_STRING=2]=\"UTF16_STRING\"})(mi||(mi={}));var Ut=class{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new Ut(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeInt32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeUint32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeInt64(t,e){this.writeInt32(t,Number(BigInt.asIntN(32,e))),this.writeInt32(t+4,Number(BigInt.asIntN(32,e>>BigInt(32))))}writeUint64(t,e){this.writeUint32(t,Number(BigInt.asUintN(32,e))),this.writeUint32(t+4,Number(BigInt.asUintN(32,e>>BigInt(32))))}writeFloat32(t,e){$i[0]=e,this.writeInt32(t,Vt[0])}writeFloat64(t,e){Qi[0]=e,this.writeInt32(t,Vt[De?0:1]),this.writeInt32(t+4,Vt[De?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let i=~(this.bb.capacity()-this.space+e)+1&t-1;for(;this.space=0&&this.vtable[e]==0;e--);let i=e+1;for(;e>=0;e--)this.addInt16(this.vtable[e]!=0?t-this.vtable[e]:0);let s=2;this.addInt16(t-this.object_start);let a=(i+s)*2;this.addInt16(a);let n=0,r=this.space;t:for(e=0;e=0;n--)this.writeInt8(a.charCodeAt(n))}this.prep(this.minalign,4+s),this.addOffset(t),s&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,e){this.finish(t,e,!0)}requiredField(t,e){let i=this.bb.capacity()-t,s=i-this.bb.readInt32(i);if(this.bb.readInt16(s+e)==0)throw new Error(\"FlatBuffers: field \"+e+\" must be set\")}startVector(t,e,i){this.notNested(),this.vector_num_elems=e,this.prep(4,t*e),this.prep(i,t*e)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(t){if(!t)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(t))return this.string_maps.get(t);let e=this.createString(t);return this.string_maps.set(t,e),e}createString(t){if(t==null)return 0;let e;t instanceof Uint8Array?e=t:e=this.text_encoder.encode(t),this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length);for(let i=0,s=this.space,a=this.bb.bytes();i=0;i--)t.addInt8(e[i]);return t.endVector()}static startContentVector(t,e){t.startVector(1,e,1)}static endClientInputMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}static createClientInputMessage(t,e,i){return Ot.startClientInputMessage(t),Ot.addName(t,e),Ot.addContent(t,i),Ot.endClientInputMessage(t)}},Ft=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionRequestMessage(t,e){return(e||new Ft).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionRequestMessage(t,e){return t.setPosition(t.position()+4),(e||new Ft).__init(t.readInt32(t.position())+t.position(),t)}token(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}static startConnectionRequestMessage(t){t.startObject(1)}static addToken(t,e){t.addFieldOffset(0,e,0)}static endConnectionRequestMessage(t){return t.endObject()}static createConnectionRequestMessage(t,e){return Ft.startConnectionRequestMessage(t),Ft.addToken(t,e),Ft.endConnectionRequestMessage(t)}},At=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsClientMessage(t,e){return(e||new At).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsClientMessage(t,e){return t.setPosition(t.position()+4),(e||new At).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startClientMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endClientMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createClientMessage(t,e,i){return At.startClientMessage(t),At.addContentType(t,e),At.addContent(t,i),At.endClientMessage(t)}},N=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsVariable(t,e){return(e||new N).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsVariable(t,e){return t.setPosition(t.position()+4),(e||new N).__init(t.readInt32(t.position())+t.position(),t)}type(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}text(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}number(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}boolean(){let t=this.bb.__offset(this.bb_pos,10);return t?!!this.bb.readInt8(this.bb_pos+t):!1}operations(t,e){let i=this.bb.__offset(this.bb_pos,12);return i?(e||new $).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}operationsLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startVariable(t){t.startObject(5)}static addType(t,e){t.addFieldInt8(0,e,0)}static addText(t,e){t.addFieldOffset(1,e,0)}static addNumber(t,e){t.addFieldFloat32(2,e,0)}static addBoolean(t,e){t.addFieldInt8(3,+e,0)}static addOperations(t,e){t.addFieldOffset(4,e,0)}static createOperationsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startOperationsVector(t,e){t.startVector(4,e,4)}static endVariable(t){return t.endObject()}static createVariable(t,e,i,s,a,n){return N.startVariable(t),N.addType(t,e),N.addText(t,i),N.addNumber(t,s),N.addBoolean(t,a),N.addOperations(t,n),N.endVariable(t)}},$=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCollectionOperation(t,e){return(e||new $).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCollectionOperation(t,e){return t.setPosition(t.position()+4),(e||new $).__init(t.readInt32(t.position())+t.position(),t)}operation(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}index(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint16(this.bb_pos+t):0}val(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new N).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startCollectionOperation(t){t.startObject(4)}static addOperation(t,e){t.addFieldInt8(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addIndex(t,e){t.addFieldInt16(2,e,0)}static addVal(t,e){t.addFieldOffset(3,e,0)}static endCollectionOperation(t){return t.endObject()}},Mi=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}r(){return this.bb.readUint16(this.bb_pos)}g(){return this.bb.readUint16(this.bb_pos+2)}b(){return this.bb.readUint16(this.bb_pos+4)}static sizeOf(){return 6}static createRGB(t,e,i,s){return t.prep(2,6),t.writeInt16(s),t.writeInt16(i),t.writeInt16(e),t.offset()}},j=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsObjState(t,e){return(e||new j).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsObjState(t,e){return t.setPosition(t.position()+4),(e||new j).__init(t.readInt32(t.position())+t.position(),t)}layer(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}x(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readFloat32(this.bb_pos+t):null}y(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):null}height(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readFloat32(this.bb_pos+t):null}width(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readFloat32(this.bb_pos+t):null}angle(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readFloat32(this.bb_pos+t):null}scale(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readFloat32(this.bb_pos+t):null}tint(t){let e=this.bb.__offset(this.bb_pos,18);return e?(t||new Mi).__init(this.bb_pos+e,this.bb):null}setXTo0(){let t=this.bb.__offset(this.bb_pos,20);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setYTo0(){let t=this.bb.__offset(this.bb_pos,22);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setHeightTo0(){let t=this.bb.__offset(this.bb_pos,24);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setWidthTo0(){let t=this.bb.__offset(this.bb_pos,26);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setAngleTo0(){let t=this.bb.__offset(this.bb_pos,28);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setScaleTo0(){let t=this.bb.__offset(this.bb_pos,30);return t?!!this.bb.readInt8(this.bb_pos+t):!1}zOrder(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readUint16(this.bb_pos+t):null}bigZOrder(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readUint32(this.bb_pos+t):null}visible(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readUint8(this.bb_pos+t):null}flippedX(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readUint8(this.bb_pos+t):null}flippedY(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.readUint8(this.bb_pos+t):null}opacity(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readUint8(this.bb_pos+t):null}setOpacityTo0(){let t=this.bb.__offset(this.bb_pos,44);return t?!!this.bb.readInt8(this.bb_pos+t):!1}animation(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.readUint8(this.bb_pos+t):null}text(t){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.__string(this.bb_pos+e,t):null}static startObjState(t){t.startObject(23)}static addLayer(t,e){t.addFieldOffset(0,e,0)}static addX(t,e){t.addFieldFloat32(1,e,0)}static addY(t,e){t.addFieldFloat32(2,e,0)}static addHeight(t,e){t.addFieldFloat32(3,e,0)}static addWidth(t,e){t.addFieldFloat32(4,e,0)}static addAngle(t,e){t.addFieldFloat32(5,e,0)}static addScale(t,e){t.addFieldFloat32(6,e,0)}static addTint(t,e){t.addFieldStruct(7,e,0)}static addSetXTo0(t,e){t.addFieldInt8(8,+e,0)}static addSetYTo0(t,e){t.addFieldInt8(9,+e,0)}static addSetHeightTo0(t,e){t.addFieldInt8(10,+e,0)}static addSetWidthTo0(t,e){t.addFieldInt8(11,+e,0)}static addSetAngleTo0(t,e){t.addFieldInt8(12,+e,0)}static addSetScaleTo0(t,e){t.addFieldInt8(13,+e,0)}static addZOrder(t,e){t.addFieldInt16(14,e,0)}static addBigZOrder(t,e){t.addFieldInt32(15,e,0)}static addVisible(t,e){t.addFieldInt8(16,e,0)}static addFlippedX(t,e){t.addFieldInt8(17,e,0)}static addFlippedY(t,e){t.addFieldInt8(18,e,0)}static addOpacity(t,e){t.addFieldInt8(19,e,0)}static addSetOpacityTo0(t,e){t.addFieldInt8(20,+e,0)}static addAnimation(t,e){t.addFieldInt8(21,e,0)}static addText(t,e){t.addFieldOffset(22,e,0)}static endObjState(t){return t.endObject()}},K=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameObject(t,e){return(e||new K).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameObject(t,e){return t.setPosition(t.position()+4),(e||new K).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}objState(t){let e=this.bb.__offset(this.bb_pos,8);return e?(t||new j).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}publicStateDiff(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}publicStateDiffLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}publicStateDiffArray(){let t=this.bb.__offset(this.bb_pos,10);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}privateStateDiff(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}privateStateDiffLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}privateStateDiffArray(){let t=this.bb.__offset(this.bb_pos,12);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}packedPublicState(t){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}packedPublicStateLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}packedPublicStateArray(){let t=this.bb.__offset(this.bb_pos,14);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}packedPrivateState(t){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}packedPrivateStateLength(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.__vector_len(this.bb_pos+t):0}packedPrivateStateArray(){let t=this.bb.__offset(this.bb_pos,16);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameObject(t){t.startObject(7)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addObjState(t,e){t.addFieldOffset(2,e,0)}static addPublicStateDiff(t,e){t.addFieldOffset(3,e,0)}static createPublicStateDiffVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPublicStateDiffVector(t,e){t.startVector(1,e,1)}static addPrivateStateDiff(t,e){t.addFieldOffset(4,e,0)}static createPrivateStateDiffVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPrivateStateDiffVector(t,e){t.startVector(1,e,1)}static addPackedPublicState(t,e){t.addFieldOffset(5,e,0)}static createPackedPublicStateVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPackedPublicStateVector(t,e){t.startVector(1,e,1)}static addPackedPrivateState(t,e){t.addFieldOffset(6,e,0)}static createPackedPrivateStateVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPackedPrivateStateVector(t,e){t.startVector(1,e,1)}static endGameObject(t){return t.endObject()}},it=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateSnapshot(t,e){return(e||new it).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateSnapshot(t,e){return t.setPosition(t.position()+4),(e||new it).__init(t.readInt32(t.position())+t.position(),t)}objects(t,e){let i=this.bb.__offset(this.bb_pos,4);return i?(e||new K).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}publicStatePacked(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}publicStatePackedLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}publicStatePackedArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}privateStatePacked(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}privateStatePackedLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}privateStatePackedArray(){let t=this.bb.__offset(this.bb_pos,8);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameStateSnapshot(t){t.startObject(3)}static addObjects(t,e){t.addFieldOffset(0,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addPublicStatePacked(t,e){t.addFieldOffset(1,e,0)}static createPublicStatePackedVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPublicStatePackedVector(t,e){t.startVector(1,e,1)}static addPrivateStatePacked(t,e){t.addFieldOffset(2,e,0)}static createPrivateStatePackedVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPrivateStatePackedVector(t,e){t.startVector(1,e,1)}static endGameStateSnapshot(t){return t.endObject()}static createGameStateSnapshot(t,e,i,s){return it.startGameStateSnapshot(t),it.addObjects(t,e),it.addPublicStatePacked(t,i),it.addPrivateStatePacked(t,s),it.endGameStateSnapshot(t)}},Ht=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionStartMessage(t,e){return(e||new Ht).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionStartMessage(t,e){return t.setPosition(t.position()+4),(e||new Ht).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}sceneSnapshot(t){let e=this.bb.__offset(this.bb_pos,6);return e?(t||new it).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startConnectionStartMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addSceneSnapshot(t,e){t.addFieldOffset(1,e,0)}static endConnectionStartMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}},zt=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCreatedObject(t,e){return(e||new zt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCreatedObject(t,e){return t.setPosition(t.position()+4),(e||new zt).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startCreatedObject(t){t.startObject(2)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endCreatedObject(t){let e=t.endObject();return t.requiredField(e,6),e}static createCreatedObject(t,e,i){return zt.startCreatedObject(t),zt.addId(t,e),zt.addName(t,i),zt.endCreatedObject(t)}},G=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsScene(t,e){return(e||new G).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsScene(t,e){return t.setPosition(t.position()+4),(e||new G).__init(t.readInt32(t.position())+t.position(),t)}publicStateDiff(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}publicStateDiffLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}publicStateDiffArray(){let t=this.bb.__offset(this.bb_pos,4);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}privateStateDiff(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}privateStateDiffLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}privateStateDiffArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}objects(t,e){let i=this.bb.__offset(this.bb_pos,8);return i?(e||new K).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}createdObjects(t,e){let i=this.bb.__offset(this.bb_pos,10);return i?(e||new zt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+t*4),this.bb):null}createdObjectsLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjects(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint16(this.bb.__vector(this.bb_pos+e)+t*2):0}deletedObjectsLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjectsArray(){let t=this.bb.__offset(this.bb_pos,12);return t?new Uint16Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startScene(t){t.startObject(5)}static addPublicStateDiff(t,e){t.addFieldOffset(0,e,0)}static createPublicStateDiffVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPublicStateDiffVector(t,e){t.startVector(1,e,1)}static addPrivateStateDiff(t,e){t.addFieldOffset(1,e,0)}static createPrivateStateDiffVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startPrivateStateDiffVector(t,e){t.startVector(1,e,1)}static addObjects(t,e){t.addFieldOffset(2,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addCreatedObjects(t,e){t.addFieldOffset(3,e,0)}static createCreatedObjectsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startCreatedObjectsVector(t,e){t.startVector(4,e,4)}static addDeletedObjects(t,e){t.addFieldOffset(4,e,0)}static createDeletedObjectsVector(t,e){t.startVector(2,e.length,2);for(let i=e.length-1;i>=0;i--)t.addInt16(e[i]);return t.endVector()}static startDeletedObjectsVector(t,e){t.startVector(2,e,2)}static endScene(t){return t.endObject()}static createScene(t,e,i,s,a,n){return G.startScene(t),G.addPublicStateDiff(t,e),G.addPrivateStateDiff(t,i),G.addObjects(t,s),G.addCreatedObjects(t,a),G.addDeletedObjects(t,n),G.endScene(t)}},jt=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateUpdateMessage(t,e){return(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateUpdateMessage(t,e){return t.setPosition(t.position()+4),(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}scene(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new G).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startGameStateUpdateMessage(t){t.startObject(1)}static addScene(t,e){t.addFieldOffset(0,e,0)}static endGameStateUpdateMessage(t){return t.endObject()}static createGameStateUpdateMessage(t,e){return jt.startGameStateUpdateMessage(t),jt.addScene(t,e),jt.endGameStateUpdateMessage(t)}},ft=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsResumePreviousSceneMessage(t,e){return(e||new ft).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsResumePreviousSceneMessage(t,e){return t.setPosition(t.position()+4),(e||new ft).__init(t.readInt32(t.position())+t.position(),t)}snapshot(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new it).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startResumePreviousSceneMessage(t){t.startObject(2)}static addSnapshot(t,e){t.addFieldOffset(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endResumePreviousSceneMessage(t){return t.endObject()}static createResumePreviousSceneMessage(t,e,i){return ft.startResumePreviousSceneMessage(t),ft.addSnapshot(t,e),ft.addName(t,i),ft.endResumePreviousSceneMessage(t)}},ut=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsSceneSwitchMessage(t,e){return(e||new ut).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSceneSwitchMessage(t,e){return t.setPosition(t.position()+4),(e||new ut).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}isPause(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}static startSceneSwitchMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addIsPause(t,e){t.addFieldInt8(1,+e,0)}static endSceneSwitchMessage(t){let e=t.endObject();return t.requiredField(e,4),e}static createSceneSwitchMessage(t,e,i){return ut.startSceneSwitchMessage(t),ut.addSceneName(t,e),ut.addIsPause(t,i),ut.endSceneSwitchMessage(t)}},_t=class{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsServerMessage(t,e){return(e||new _t).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsServerMessage(t,e){return t.setPosition(t.position()+4),(e||new _t).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startServerMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endServerMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createServerMessage(t,e,i){return _t.startServerMessage(t),_t.addContentType(t,e),_t.addContent(t,i),_t.endServerMessage(t)}},vi;try{vi=new TextDecoder}catch{}var v,ct,h=0,X={},P,Rt,ht=0,wt=0,tt,Ct,dt=[],R,Ji={useRecords:!1,mapsAsObjects:!0},ta=class{},ea=new ta;ea.name=\"MessagePack 0xC1\";var se=!1,ia=2,ts;try{new Function(\"\")}catch{ia=1/0}var Ye=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.sequential&&t.trusted!==!1&&(t.trusted=!0,!t.structures&&t.useRecords!=!1&&(t.structures=[],t.maxSharedStructures||(t.maxSharedStructures=0))),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0),t.int64AsNumber&&(t.int64AsType=\"number\")),Object.assign(this,t)}unpack(t,e){if(v)return oa(()=>(ki(),this?this.unpack(t,e):Ye.prototype.unpack.call(Ji,t,e)));typeof e==\"object\"?(ct=e.end||t.length,h=e.start||0):(h=0,ct=e>-1?e:t.length),wt=0,Rt=null,tt=null,v=t;try{R=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(i){throw v=null,t instanceof Uint8Array?i:new Error(\"Source must be a Uint8Array or Buffer but was a \"+(t&&typeof t==\"object\"?t.constructor.name:typeof t))}if(this instanceof Ye){if(X=this,this.structures)return P=this.structures,Re(e);(!P||P.length>0)&&(P=[])}else X=Ji,(!P||P.length>0)&&(P=[]);return Re(e)}unpackMultiple(t,e){let i,s=0;try{se=!0;let a=t.length,n=this?this.unpack(t,a):la.unpack(t,a);if(e){for(e(n);hi.slice(0)));for(let i=0,s=t.length;i=32&&(a.highByte=i-32>>5))}t.sharedLength=t.length;for(let i in e||[])if(i>=0){let s=t[i],a=e[i];a&&(s&&((t.restoreStructures||(t.restoreStructures=[]))[i]=s),t[i]=a)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Re(t){try{if(!X.trusted&&!se){let i=P.sharedLength||0;i=32&&ts?(e=ts(v,h,ct,X),v=null,!(t&&t.lazy)&&e&&(e=e.toJSON()),h=ct):e=q(),tt&&(h=tt.postBundlePosition,tt=null),h==ct)P&&P.restoreStructures&&es(),P=null,v=null,Ct&&(Ct=null);else{if(h>ct)throw new Error(\"Unexpected end of MessagePack data\");if(!se)throw new Error(\"Data read, but end of buffer not reached \"+JSON.stringify(e).slice(0,100))}return e}catch(e){throw P&&P.restoreStructures&&es(),ki(),(e instanceof RangeError||e.message.startsWith(\"Unexpected end of buffer\")||h>ct)&&(e.incomplete=!0),e}}function es(){for(let t in P.restoreStructures)P[t]=P.restoreStructures[t];P.restoreStructures=null}function q(){let t=v[h++];if(t<160)if(t<128){if(t<64)return t;{let e=P[t&63]||X.getStructures&&sa()[t&63];return e?(e.read||(e.read=Bi(e,t&63)),e.read()):t}}else if(t<144)if(t-=128,X.mapsAsObjects){let e={};for(let i=0;i=h)return Rt.slice(h-ht,(h+=e)-ht);if(wt==0&&ct<140){let i=e<16?Ni(e):aa(e);if(i!=null)return i}return Si(e)}else{let e;switch(t){case 192:return null;case 193:return tt?(e=q(),e>0?tt[1].slice(tt.position1,tt.position1+=e):tt[0].slice(tt.position0,tt.position0-=e)):ea;case 194:return!1;case 195:return!0;case 196:if(e=v[h++],e===void 0)throw new Error(\"Unexpected end of buffer\");return si(e);case 197:return e=R.getUint16(h),h+=2,si(e);case 198:return e=R.getUint32(h),h+=4,si(e);case 199:return Zt(v[h++]);case 200:return e=R.getUint16(h),h+=2,Zt(e);case 201:return e=R.getUint32(h),h+=4,Zt(e);case 202:if(e=R.getFloat32(h),X.useFloat32>2){let i=Ei[(v[h]&127)<<1|v[h+1]>>7];return h+=4,(i*e+(e>0?.5:-.5)>>0)/i}return h+=4,e;case 203:return e=R.getFloat64(h),h+=8,e;case 204:return v[h++];case 205:return e=R.getUint16(h),h+=2,e;case 206:return e=R.getUint32(h),h+=4,e;case 207:return X.int64AsType===\"number\"?(e=R.getUint32(h)*4294967296,e+=R.getUint32(h+4)):X.int64AsType===\"string\"?e=R.getBigUint64(h).toString():e=R.getBigUint64(h),h+=8,e;case 208:return R.getInt8(h++);case 209:return e=R.getInt16(h),h+=2,e;case 210:return e=R.getInt32(h),h+=4,e;case 211:return X.int64AsType===\"number\"?(e=R.getInt32(h)*4294967296,e+=R.getUint32(h+4)):X.int64AsType===\"string\"?e=R.getBigInt64(h).toString():e=R.getBigInt64(h),h+=8,e;case 212:if(e=v[h++],e==114)return os(v[h++]&63);{let i=dt[e];if(i)return i.read?(h++,i.read(q())):i.noBuffer?(h++,i()):i(v.subarray(h,++h));throw new Error(\"Unknown extension \"+e)}case 213:return e=v[h],e==114?(h++,os(v[h++]&63,v[h++])):Zt(2);case 214:return Zt(4);case 215:return Zt(8);case 216:return Zt(16);case 217:return e=v[h++],wt>=h?Rt.slice(h-ht,(h+=e)-ht):wn(e);case 218:return e=R.getUint16(h),h+=2,wt>=h?Rt.slice(h-ht,(h+=e)-ht):yn(e);case 219:return e=R.getUint32(h),h+=4,wt>=h?Rt.slice(h-ht,(h+=e)-ht):mn(e);case 220:return e=R.getUint16(h),h+=2,ss(e);case 221:return e=R.getUint32(h),h+=4,ss(e);case 222:return e=R.getUint16(h),h+=2,as(e);case 223:return e=R.getUint32(h),h+=4,as(e);default:if(t>=224)return t-256;if(t===void 0){let i=new Error(\"Unexpected end of MessagePack data\");throw i.incomplete=!0,i}throw new Error(\"Unknown MessagePack token \"+t)}}}var gn=/^[a-zA-Z_$][a-zA-Z\\d_$]*$/;function Bi(t,e){function i(){if(i.count++>ia){let a=t.read=new Function(\"r\",\"return function(){return \"+(X.freezeData?\"Object.freeze\":\"\")+\"({\"+t.map(n=>n===\"__proto__\"?\"__proto_:r()\":gn.test(n)?n+\":r()\":\"[\"+JSON.stringify(n)+\"]:r()\").join(\",\")+\"})}\")(q);return t.highByte===0&&(t.read=is(e,t.read)),a()}let s={};for(let a=0,n=t.length;afunction(){let i=v[h++];if(i===0)return e();let s=t<32?-(t+(i<<5)):t+(i<<5),a=P[s]||sa()[s];if(!a)throw new Error(\"Record id is not defined for \"+s);return a.read||(a.read=Bi(a,t)),a.read()};function sa(){let t=oa(()=>(v=null,X.getStructures()));return P=X._mergeStructures(t,P)}var Si=Ue,wn=Ue,yn=Ue,mn=Ue;function Ue(t){let e;if(t<16&&(e=Ni(t)))return e;if(t>64&&vi)return vi.decode(v.subarray(h,h+=t));let i=h+t,s=[];for(e=\"\";h65535&&(u-=65536,s.push(u>>>10&1023|55296),u=56320|u&1023),s.push(u)}else s.push(a);s.length>=4096&&(e+=Q.apply(String,s),s.length=0)}return s.length>0&&(e+=Q.apply(String,s)),e}function ss(t){let e=new Array(t);for(let i=0;i0){h=e;return}i[s]=a}return Q.apply(String,i)}function Ni(t){if(t<4)if(t<2){if(t===0)return\"\";{let e=v[h++];if((e&128)>1){h-=1;return}return Q(e)}}else{let e=v[h++],i=v[h++];if((e&128)>0||(i&128)>0){h-=2;return}if(t<3)return Q(e,i);let s=v[h++];if((s&128)>0){h-=3;return}return Q(e,i,s)}else{let e=v[h++],i=v[h++],s=v[h++],a=v[h++];if((e&128)>0||(i&128)>0||(s&128)>0||(a&128)>0){h-=4;return}if(t<6){if(t===4)return Q(e,i,s,a);{let n=v[h++];if((n&128)>0){h-=5;return}return Q(e,i,s,a,n)}}else if(t<8){let n=v[h++],r=v[h++];if((n&128)>0||(r&128)>0){h-=6;return}if(t<7)return Q(e,i,s,a,n,r);let o=v[h++];if((o&128)>0){h-=7;return}return Q(e,i,s,a,n,r,o)}else{let n=v[h++],r=v[h++],o=v[h++],u=v[h++];if((n&128)>0||(r&128)>0||(o&128)>0||(u&128)>0){h-=8;return}if(t<10){if(t===8)return Q(e,i,s,a,n,r,o,u);{let l=v[h++];if((l&128)>0){h-=9;return}return Q(e,i,s,a,n,r,o,u,l)}}else if(t<12){let l=v[h++],d=v[h++];if((l&128)>0||(d&128)>0){h-=10;return}if(t<11)return Q(e,i,s,a,n,r,o,u,l,d);let O=v[h++];if((O&128)>0){h-=11;return}return Q(e,i,s,a,n,r,o,u,l,d,O)}else{let l=v[h++],d=v[h++],O=v[h++],g=v[h++];if((l&128)>0||(d&128)>0||(O&128)>0||(g&128)>0){h-=12;return}if(t<14){if(t===12)return Q(e,i,s,a,n,r,o,u,l,d,O,g);{let p=v[h++];if((p&128)>0){h-=13;return}return Q(e,i,s,a,n,r,o,u,l,d,O,g,p)}}else{let p=v[h++],C=v[h++];if((p&128)>0||(C&128)>0){h-=14;return}if(t<15)return Q(e,i,s,a,n,r,o,u,l,d,O,g,p,C);let M=v[h++];if((M&128)>0){h-=15;return}return Q(e,i,s,a,n,r,o,u,l,d,O,g,p,C,M)}}}}}function ns(){let t=v[h++],e;if(t<192)e=t-160;else switch(t){case 217:e=v[h++];break;case 218:e=R.getUint16(h),h+=2;break;case 219:e=R.getUint32(h),h+=4;break;default:throw new Error(\"Expected string\")}return Ue(e)}function si(t){return X.copyBuffers?Uint8Array.prototype.slice.call(v,h,h+=t):v.subarray(h,h+=t)}function Zt(t){let e=v[h++];if(dt[e]){let i;return dt[e](v.subarray(h,i=h+=t),s=>{h=s;try{return q()}finally{h=i}})}else throw new Error(\"Unknown extension type \"+e)}var rs=new Array(4096);function na(){let t=v[h++];if(t>=160&&t<192){if(t=t-160,wt>=h)return Rt.slice(h-ht,(h+=t)-ht);if(!(wt==0&&ct<180))return Si(t)}else return h--,q().toString();let e=(t<<5^(t>1?R.getUint16(h):t>0?v[h]:0))&4095,i=rs[e],s=h,a=h+t-3,n,r=0;if(i&&i.bytes==t){for(;s{let i=q().map(n=>n.toString()),s=t;e!==void 0&&(t=t<32?-((e<<5)+t):(e<<5)+t,i.highByte=e);let a=P[t];return a&&a.isShared&&((P.restoreStructures||(P.restoreStructures=[]))[t]=a),P[t]=i,i.read=Bi(i,s),i.read()};dt[0]=()=>{};dt[0].noBuffer=!0;dt[101]=()=>{let t=q();return(globalThis[t[0]]||Error)(t[1])};dt[105]=t=>{let e=R.getUint32(h-4);Ct||(Ct=new Map);let i=v[h],s;i>=144&&i<160||i==220||i==221?s=[]:s={};let a={target:s};Ct.set(e,a);let n=q();return a.used?Object.assign(s,n):(a.target=n,n)};dt[112]=t=>{let e=R.getUint32(h-4),i=Ct.get(e);return i.used=!0,i.target};dt[115]=()=>new Set(q());var ra=[\"Int8\",\"Uint8\",\"Uint8Clamped\",\"Int16\",\"Uint16\",\"Int32\",\"Uint32\",\"Float32\",\"Float64\",\"BigInt64\",\"BigUint64\"].map(t=>t+\"Array\");dt[116]=t=>{let e=t[0],i=ra[e];if(!i)throw new Error(\"Could not find typed array for code \"+e);return new globalThis[i](Uint8Array.prototype.slice.call(t,1).buffer)};dt[120]=()=>{let t=q();return new RegExp(t[0],t[1])};var vn=[];dt[98]=t=>{let e=(t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3],i=h;return h+=e-t.length,tt=vn,tt=[ns(),ns()],tt.position0=0,tt.position1=0,tt.postBundlePosition=h,h=i,q()};dt[255]=t=>t.length==4?new Date((t[0]*16777216+(t[1]<<16)+(t[2]<<8)+t[3])*1e3):t.length==8?new Date(((t[0]<<22)+(t[1]<<14)+(t[2]<<6)+(t[3]>>2))/1e6+((t[3]&3)*4294967296+t[4]*16777216+(t[5]<<16)+(t[6]<<8)+t[7])*1e3):t.length==12?new Date(((t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3])/1e6+((t[4]&128?-281474976710656:0)+t[6]*1099511627776+t[7]*4294967296+t[8]*16777216+(t[9]<<16)+(t[10]<<8)+t[11])*1e3):new Date(\"invalid\");function oa(t){let e=ct,i=h,s=ht,a=wt,n=Rt,r=Ct,o=tt,u=new Uint8Array(v.slice(0,ct)),l=P,d=P.slice(0,P.length),O=X,g=se,p=t();return ct=e,h=i,ht=s,wt=a,Rt=n,Ct=r,tt=o,v=u,se=g,P=l,P.splice(0,P.length,...d),X=O,R=new DataView(v.buffer,v.byteOffset,v.byteLength),p}function ki(){v=null,Ct=null,P=null}var Ei=new Array(147);for(let t=0;t<256;t++)Ei[t]=+(\"1e\"+Math.floor(45.15-t*.30103));var la=new Ye({useRecords:!1}),Sn=la.unpack,Ze;try{Ze=new TextEncoder}catch{}var Oi,da,Qe=typeof Buffer<\"u\",Pe=Qe?function(t){return Buffer.allocUnsafeSlow(t)}:Uint8Array,ha=Qe?Buffer:Uint8Array,ls=Qe?4294967296:2144337920,f,ce,L,c=0,st,Y=null,kn,On=61440,An=/[\\u0080-\\uFFFF]/,Qt=Symbol(\"record-id\"),In=class extends Ye{constructor(t){super(t),this.offset=0;let e,i,s,a,n=ha.prototype.utf8Write?function(b,y){return f.utf8Write(b,y,4294967295)}:Ze&&Ze.encodeInto?function(b,y){return Ze.encodeInto(b,f.subarray(y)).written}:!1,r=this;t||(t={});let o=t&&t.sequential,u=t.structures||t.saveStructures,l=t.maxSharedStructures;if(l==null&&(l=u?32:0),l>8160)throw new Error(\"Maximum maxSharedStructure is 8160\");t.structuredClone&&t.moreTypes==null&&(t.moreTypes=!0);let d=t.maxOwnStructures;d==null&&(d=u?32:64),!this.structures&&t.useRecords!=!1&&(this.structures=[]);let O=l>32||d+l>64,g=l+64,p=l+d+64;if(p>8256)throw new Error(\"Maximum maxSharedStructure + maxOwnStructure is 8192\");let C=[],M=0,U=0;this.pack=this.encode=function(b,y){if(f||(f=new Pe(8192),L=f.dataView||(f.dataView=new DataView(f.buffer,0,8192)),c=0),st=f.length-10,st-c<2048?(f=new Pe(f.length),L=f.dataView||(f.dataView=new DataView(f.buffer,0,f.length)),st=f.length-10,c=0):c=c+7&2147483640,e=c,a=r.structuredClone?new Map:null,r.bundleStrings&&typeof b!=\"string\"?(Y=[],Y.size=1/0):Y=null,s=r.structures,s){s.uninitialized&&(s=r._mergeStructures(r.getStructures()));let _=s.sharedLength||0;if(_>l)throw new Error(\"Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to \"+s.sharedLength);if(!s.transitions){s.transitions=Object.create(null);for(let w=0;w<_;w++){let S=s[w];if(!S)continue;let V,T=s.transitions;for(let x=0,W=S.length;xx.offset>W.offset?1:-1),S=w.length,V=-1;for(;_&&S>0;){let x=w[--S].offset+e;x<_.stringsPosition+e&&V===-1&&(V=0),x>_.position+e?V>=0&&(V+=6):(V>=0&&(L.setUint32(_.position+e,L.getUint32(_.position+e)+V),V=-1),_=_.previous,S++)}V>=0&&_&&L.setUint32(_.position+e,L.getUint32(_.position+e)+V),c+=w.length*6,c>st&&I(c),r.offset=c;let T=jn(f.subarray(e,c),w);return a=null,T}return r.offset=c,y&Vn?(f.start=e,f.end=c,f):f.subarray(e,c)}finally{if(s){U<10&&U++;let _=s.sharedLength||0;if(s.length>_&&(s.length=_),M>1e4)s.transitions=null,U=0,M=0,C.length>0&&(C=[]);else if(C.length>0&&!o){for(let w=0,S=C.length;w{var y=b.length;y<16?f[c++]=144|y:y<65536?(f[c++]=220,f[c++]=y>>8,f[c++]=y&255):(f[c++]=221,L.setUint32(c,y),c+=4);for(let _=0;_{c>st&&(f=I(c));var y=typeof b,_;if(y===\"string\"){let w=b.length;if(Y&&w>=4&&w<4096){if((Y.size+=w)>On){let x,W=(Y[0]?Y[0].length*3+Y[1].length:0)+10;c+W>st&&(f=I(c+W));let E;Y.position?(E=Y,f[c]=200,c+=3,f[c++]=98,x=c-e,c+=4,cs(e,k,0),L.setUint16(x+e-3,c-e-x)):(f[c++]=214,f[c++]=98,x=c-e,c+=4),Y=[\"\",\"\"],Y.previous=E,Y.size=0,Y.position=x}let T=An.test(b);Y[T?0:1]+=b,f[c++]=193,k(T?-w:w);return}let S;w<32?S=1:w<256?S=2:w<65536?S=3:S=5;let V=w*3;if(c+V>st&&(f=I(c+V)),w<64||!n){let T,x,W,E=c+S;for(T=0;T>6|192,f[E++]=x&63|128):(x&64512)===55296&&((W=b.charCodeAt(T+1))&64512)===56320?(x=65536+((x&1023)<<10)+(W&1023),T++,f[E++]=x>>18|240,f[E++]=x>>12&63|128,f[E++]=x>>6&63|128,f[E++]=x&63|128):(f[E++]=x>>12|224,f[E++]=x>>6&63|128,f[E++]=x&63|128);_=E-c-S}else _=n(b,c+S);_<32?f[c++]=160|_:_<256?(S<2&&f.copyWithin(c+2,c+1,c+1+_),f[c++]=217,f[c++]=_):_<65536?(S<3&&f.copyWithin(c+3,c+2,c+2+_),f[c++]=218,f[c++]=_>>8,f[c++]=_&255):(S<5&&f.copyWithin(c+5,c+3,c+3+_),f[c++]=219,L.setUint32(c,_),c+=4),c+=_}else if(y===\"number\")if(b>>>0===b)b<32||b<128&&this.useRecords===!1||b<64&&!this.randomAccessStructure?f[c++]=b:b<256?(f[c++]=204,f[c++]=b):b<65536?(f[c++]=205,f[c++]=b>>8,f[c++]=b&255):(f[c++]=206,L.setUint32(c,b),c+=4);else if(b>>0===b)b>=-32?f[c++]=256+b:b>=-128?(f[c++]=208,f[c++]=b+256):b>=-32768?(f[c++]=209,L.setInt16(c,b),c+=2):(f[c++]=210,L.setInt32(c,b),c+=4);else{let w;if((w=this.useFloat32)>0&&b<4294967296&&b>=-2147483648){f[c++]=202,L.setFloat32(c,b);let S;if(w<4||(S=b*Ei[(f[c]&127)<<1|f[c+1]>>7])>>0===S){c+=4;return}else c--}f[c++]=203,L.setFloat64(c,b),c+=8}else if(y===\"object\")if(!b)f[c++]=192;else{if(a){let S=a.get(b);if(S){if(!S.id){let V=a.idsToInsert||(a.idsToInsert=[]);S.id=V.push(S)}f[c++]=214,f[c++]=112,L.setUint32(c,S.id),c+=4;return}else a.set(b,{offset:c-e})}let w=b.constructor;if(w===Object)m(b,!0);else if(w===Array)A(b);else if(w===Map){_=b.size,_<16?f[c++]=128|_:_<65536?(f[c++]=222,f[c++]=_>>8,f[c++]=_&255):(f[c++]=223,L.setUint32(c,_),c+=4);for(let[S,V]of b)k(S),k(V)}else{for(let S=0,V=Oi.length;S(f=W,W=null,c+=Tt,c>st&&I(c),{target:f,targetView:L,position:c-Tt}),k)}finally{W&&(f=W,L=E,c=St,st=f.length-10)}Lt&&(Lt.length+c>st&&I(Lt.length+c),c=xn(Lt,f,c,x.type));return}}Array.isArray(b)?A(b):m(b,!b.hasOwnProperty)}}else if(y===\"boolean\")f[c++]=b?195:194;else if(y===\"bigint\"){if(b=-(BigInt(1)<0)f[c++]=207,L.setBigUint64(c,b);else if(this.largeBigIntToFloat)f[c++]=203,L.setFloat64(c,Number(b));else throw new RangeError(b+\" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64\");c+=8}else if(y===\"undefined\")this.encodeUndefinedAsNil?f[c++]=192:(f[c++]=212,f[c++]=0,f[c++]=0);else if(y===\"function\")k(this.writeFunction&&this.writeFunction());else throw new Error(\"Unknown type: \"+y)},m=this.useRecords===!1?this.variableMapSize?b=>{let y=Object.keys(b),_=y.length;_<16?f[c++]=128|_:_<65536?(f[c++]=222,f[c++]=_>>8,f[c++]=_&255):(f[c++]=223,L.setUint32(c,_),c+=4);let w;for(let S=0;S<_;S++)k(w=y[S]),k(b[w])}:(b,y)=>{f[c++]=222;let _=c-e;c+=2;let w=0;for(let S in b)(y||b.hasOwnProperty(S))&&(k(S),k(b[S]),w++);f[_+++e]=w>>8,f[_+e]=w&255}:t.progressiveRecords&&!O?(b,y)=>{let _,w=s.transitions||(s.transitions=Object.create(null)),S=c++-e,V;for(let T in b)if(y||b.hasOwnProperty(T)){if(_=w[T],_)w=_;else{let x=Object.keys(b),W=w;w=s.transitions;let E=0;for(let St=0,Lt=x.length;St{let _,w=s.transitions||(s.transitions=Object.create(null)),S=0;for(let T in b)(y||b.hasOwnProperty(T))&&(_=w[T],_||(_=w[T]=Object.create(null),S++),w=_);let V=w[Qt];V?V>=96&&O?(f[c++]=((V-=96)&31)+96,f[c++]=V>>5):f[c++]=V:H(w,w.__keys__||Object.keys(b),S);for(let T in b)(y||b.hasOwnProperty(T))&&k(b[T])},I=b=>{let y;if(b>16777216){if(b-e>ls)throw new Error(\"Packed buffer would be larger than maximum buffer size\");y=Math.min(ls,Math.round(Math.max((b-e)*(b>67108864?1.25:2),4194304)/4096)*4096)}else y=(Math.max(b-e<<2,f.length-1)>>12)+1<<12;let _=new Pe(y);return L=_.dataView||(_.dataView=new DataView(_.buffer,0,y)),b=Math.min(b,f.length),f.copy?f.copy(_,0,e,b):_.set(f.slice(e,b)),c-=e,e=0,st=_.length-10,f=_},H=(b,y,_)=>{let w=s.nextId;w||(w=64),w=p&&(w=g),s.nextId=w+1);let S=y.highByte=w>=96&&O?w-96>>5:-1;b[Qt]=w,b.__keys__=y,s[w-64]=y,w=0?(f[c++]=(w&31)+96,f[c++]=S):f[c++]=w):(S>=0?(f[c++]=213,f[c++]=114,f[c++]=(w&31)+96,f[c++]=S):(f[c++]=212,f[c++]=114,f[c++]=w),_&&(M+=U*_),C.length>=d&&(C.shift()[Qt]=0),C.push(b),k(y))},F=(b,y,_,w)=>{let S=f,V=c,T=st,x=e;f=ce,c=0,e=0,f||(ce=f=new Pe(8192)),st=f.length-10,H(b,y,w),ce=f;let W=c;if(f=S,c=V,st=T,e=x,W>1){let E=c+W-1;E>st&&I(E);let St=_+e;f.copyWithin(St+W,St+1,c),f.set(ce.slice(0,W),St),c=E}else f[_+e]=ce[0]},z=(b,y)=>{let _=kn(b,f,c,s,I,(w,S,V)=>{if(V)return i=!0;if(c=S,e>0){if(k(w),e==0)return{position:c,targetView:L,target:f}}else k(w);return c},this);if(_===0)return m(b,!0);c=_}}useBuffer(t){f=t,L=new DataView(f.buffer,f.byteOffset,f.byteLength),c=0}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}};da=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ta];Oi=[{pack(t,e,i){let s=t.getTime()/1e3;if((this.useTimestamp32||t.getMilliseconds()===0)&&s>=0&&s<4294967296){let{target:a,targetView:n,position:r}=e(6);a[r++]=214,a[r++]=255,n.setUint32(r,s)}else if(s>0&&s<4294967296){let{target:a,targetView:n,position:r}=e(10);a[r++]=215,a[r++]=255,n.setUint32(r,t.getMilliseconds()*4e6+(s/1e3/4294967296>>0)),n.setUint32(r+4,s)}else if(isNaN(s)){if(this.onInvalidDate)return e(0),i(this.onInvalidDate());let{target:a,targetView:n,position:r}=e(3);a[r++]=212,a[r++]=255,a[r++]=255}else{let{target:a,targetView:n,position:r}=e(15);a[r++]=199,a[r++]=12,a[r++]=255,n.setUint32(r,t.getMilliseconds()*1e6),n.setBigInt64(r+4,BigInt(Math.floor(s)))}}},{pack(t,e,i){let s=Array.from(t),{target:a,position:n}=e(this.moreTypes?3:0);this.moreTypes&&(a[n++]=212,a[n++]=115,a[n++]=0),i(s)}},{pack(t,e,i){let{target:s,position:a}=e(this.moreTypes?3:0);this.moreTypes&&(s[a++]=212,s[a++]=101,s[a++]=0),i([t.name,t.message])}},{pack(t,e,i){let{target:s,position:a}=e(this.moreTypes?3:0);this.moreTypes&&(s[a++]=212,s[a++]=120,s[a++]=0),i([t.source,t.flags])}},{pack(t,e){this.moreTypes?ds(t,16,e):hs(Qe?Buffer.from(t):new Uint8Array(t),e)}},{pack(t,e){let i=t.constructor;i!==ha&&this.moreTypes?ds(t,ra.indexOf(i.name),e):hs(t,e)}},{pack(t,e){let{target:i,position:s}=e(1);i[s]=193}}];function ds(t,e,i,s){let a=t.byteLength;if(a+1<256){var{target:n,position:r}=i(4+a);n[r++]=199,n[r++]=a+1}else if(a+1<65536){var{target:n,position:r}=i(5+a);n[r++]=200,n[r++]=a+1>>8,n[r++]=a+1&255}else{var{target:n,position:r,targetView:o}=i(7+a);n[r++]=201,o.setUint32(r,a+1),r+=4}n[r++]=116,n[r++]=e,n.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r)}function hs(t,e){let i=t.byteLength;var s,a;if(i<256){var{target:s,position:a}=e(i+2);s[a++]=196,s[a++]=i}else if(i<65536){var{target:s,position:a}=e(i+3);s[a++]=197,s[a++]=i>>8,s[a++]=i&255}else{var{target:s,position:a,targetView:n}=e(i+5);s[a++]=198,n.setUint32(a,i),a+=4}s.set(t,a)}function xn(t,e,i,s){let a=t.length;switch(a){case 1:e[i++]=212;break;case 2:e[i++]=213;break;case 4:e[i++]=214;break;case 8:e[i++]=215;break;case 16:e[i++]=216;break;default:a<256?(e[i++]=199,e[i++]=a):a<65536?(e[i++]=200,e[i++]=a>>8,e[i++]=a&255):(e[i++]=201,e[i++]=a>>24,e[i++]=a>>16&255,e[i++]=a>>8&255,e[i++]=a&255)}return e[i++]=s,e.set(t,i),i+=a,i}function jn(t,e){let i,s=e.length*6,a=t.length-s;for(;i=e.pop();){let n=i.offset,r=i.id;t.copyWithin(n+s,n,a),s-=6;let o=n+s;t[o++]=214,t[o++]=105,t[o++]=r>>24,t[o++]=r>>16&255,t[o++]=r>>8&255,t[o++]=r&255,a=n}return t}function cs(t,e,i){if(Y.length>0){L.setUint32(Y.position+t,c+i-Y.position-t),Y.stringsPosition=c-t;let s=Y;Y=null,e(s[0]),e(s[1])}}function Cn(t,e){return t.isCompatible=i=>{let s=!i||(e.lastNamedStructuresLength||0)===i.length;return s||e._mergeStructures(i),s},t}var Un=new In({useRecords:!1}),Tn=Un.pack,Vn=512,zn=1024,ye=t=>Tn(t.toJSObject()),me=(t,e)=>t.fromJSObject(Sn(e)),ca=(t,e,i)=>{if(!e.thnkServer)return-1;let{stateVariables:s,objectsRegistery:a}=e.thnkServer,{publicStateVariable:n,privateStateVariable:r}=s,o=n.getChildrenCount()!==0?it.createPublicStatePackedVector(t,ye(n)):null,u=r.getChild(i),l=u.getChildrenCount()!==0?it.createPrivateStatePackedVector(t,ye(u)):null,d=a.createObjectsSnapshot(t,i),O=d.length?it.createObjectsVector(t,d):null;return it.startGameStateSnapshot(t),o&&it.addPublicStatePacked(t,o),l&&it.addPrivateStatePacked(t,l),O&&it.addObjects(t,O),it.endGameStateSnapshot(t)},Fn=(t,e,i)=>{let s=new Et(512),a=s.createString(i.getName()),n=ca(s,i,t);Ht.startConnectionStartMessage(s),Ht.addSceneName(s,a),Ht.addSceneSnapshot(s,n),e.sendServerMessageTo(t,s,_t.createServerMessage(s,1,Ht.endConnectionStartMessage(s)))},Dn=(t,e,i)=>{let s=new Et(256),a=i.serialize(s,t);if(!a)return;jt.startGameStateUpdateMessage(s),jt.addScene(s,a);let n=jt.endGameStateUpdateMessage(s);e.sendServerMessageTo(t,s,_t.createServerMessage(s,2,n))},Rn=(t,e,i)=>{let s=new Et(512),a=s.createString(e);ut.startSceneSwitchMessage(s),ut.addSceneName(s,a),ut.addIsPause(s,i),t.sendServerMessageToAll(s,_t.createServerMessage(s,3,ut.endSceneSwitchMessage(s)))},ai=(t,e,i)=>{for(let s of t){let a=new Et(512),n=i?a.createString(i.getName()):null,r=i?ca(a,i,s):null;ft.startResumePreviousSceneMessage(a),r&&n&&(ft.addSnapshot(a,r),ft.addName(a,n));let o=_t.createServerMessage(a,4,ft.endResumePreviousSceneMessage(a));e.sendServerMessageTo(s,a,o)}},ba={};$e(ba,{getCurrentPlayerID:()=>Pn,markObjectAsOwned:()=>Mn,pickOwnedObjects:()=>Bn,switchPlayerContext:()=>Ge});var ve=\"\",Ai=new Map,Pn=()=>ve,Ge=t=>{ve=t},Mn=t=>{let e=Ai.get(ve);e||Ai.set(ve,e=new gdjs.LongLivedObjectsList),e.addObject(t.getName(),t)},Bn=t=>{let e=Ai.get(ve);if(!e){for(let i of Object.values(t.items))i.length=0;return!1}for(let[i,s]of Object.entries(t.items))gdjs.copyArray(e.getObjects(i),s);return!0},bs=new Map,Li=t=>{let e=bs.get(t);return e||bs.set(t,e=[]),e},Nn=(t,e,i)=>{Li(e).push({initiatorUserID:t,serializedExtraData:i})},En=(t,e,i)=>{Li(e).push({initiatorUserID:t,extraData:i})},Ln=(t,e)=>{let i=Li(t);if(i.length){let s=i.shift();return Ge(s.initiatorUserID),s.serializedExtraData?me(e,s.serializedExtraData):s.extraData&&gdjs.Variable.copy(s.extraData,e),!0}return!1},Zn=t=>!!t.thnkServer?.playerManager.popConnection(),Hn=t=>!!t.thnkServer?.playerManager.popDisconnection(),fa={};$e(fa,{getTickRate:()=>Zi,isDedicated:()=>pa,setDedicated:()=>Yn,setTickRate:()=>Gn});var ua=!1,_a=120,Yn=()=>{ua=!0},Gn=t=>{_a=Math.max(1,t)},Zi=()=>_a,pa=()=>ua,at=class extends gdjs.Variable{dirty=!0;operations=[];static setupSyncedVariable(t,e){let i=new at;return t.has(e)&&gdjs.Variable.copy(t.get(e),i),t.add(e,i),i}static setupStateVariables(t){let e=at.setupSyncedVariable(t,\"State\"),i=at.setupSyncedVariable(t,\"PlayerState\"),s=at.setupSyncedVariable(t,\"TeamState\");return{publicStateVariable:e,privateStateVariable:i,teamStateVariable:s}}reinitialize(t){if(this._type=\"number\",this._value=0,this._str=\"0\",this._bool=!1,this._children={},this._childrenArray=[],this._undefinedInContainer=!1,t!==void 0){if(this._type=t.type||\"number\",this._type===\"number\")this._value=parseFloat(t.value||\"0\"),this._value!==this._value&&(this._value=0);else if(this._type===\"string\")this._str=\"\"+t.value||\"0\";else if(this._type===\"boolean\")this._bool=!!t.value;else if(this._type===\"structure\"){if(t.children!==void 0)for(var e=0,i=t.children.length;e{let[i,s,a]=e.split(\";\").map(n=>parseInt(n,10));return Mi.createRGB(t,i,s,a)},Wn=(t,e,i)=>{let s=e.getString?t.createSharedString(e.getString()):null,a=t.createSharedString(e.getLayer());j.startObjState(t),a&&j.addLayer(t,a),j.addX(t,e.getX()),j.addY(t,e.getY()),j.addHeight(t,e.getHeight()),j.addWidth(t,e.getWidth()),j.addAngle(t,e.getAngle()),e.getX()===0&&j.addSetXTo0(t,!0),e.getY()===0&&j.addSetYTo0(t,!0),e.getHeight()===0&&j.addSetHeightTo0(t,!0),e.getWidth()===0&&j.addSetWidthTo0(t,!0),e.getAngle()===0&&j.addSetAngleTo0(t,!0),e.getZOrder()<=65535?j.addZOrder(t,e.getZOrder()+1):j.addBigZOrder(t,e.getZOrder()+1),j.addVisible(t,e.isHidden()?1:2),e.isFlippedX&&j.addFlippedX(t,e.isFlippedX()?1:2),e.isFlippedY&&j.addFlippedY(t,e.isFlippedY()?1:2),e.getOpacity&&(e.getOpacity()!==0?j.addOpacity(t,e.getOpacity()):j.addSetOpacityTo0(t,!0)),e.getAnimation&&j.addAnimation(t,e.getAnimation()+1),e.getColor&&j.addTint(t,ga(t,e.getColor())),s&&j.addText(t,s);let n=j.endObjState(t),{stateVariables:r}=e,{publicStateVariable:o,privateStateVariable:u}=r,l=o.getChildrenCount()!==0?K.createPackedPublicStateVector(t,ye(o)):null,d=u.getChild(i),O=d.getChildrenCount()!==0?K.createPackedPrivateStateVector(t,ye(d)):null,g=t.createSharedString(e.getName());return K.startGameObject(t),K.addId(t,e.thnkID),K.addName(t,g),K.addObjState(t,n),l&&K.addPackedPublicState(t,l),O&&K.addPackedPrivateState(t,O),K.endGameObject(t)},Kn=new gdjs.Logger(\"THNK - Objects replication\"),qn=class{recycledIDs=[];currentNewID=1;generateNewID=()=>{let t=this.recycledIDs.pop()??this.currentNewID++;return t>65535?(Kn.error(\"Maximum amount of simultaneously replicated objects reached! Weird stuff is going to happen...\"),t%65535):t};registeredObjects=new Map;forEach(t){for(let e of this.registeredObjects.values())t(e)}registerObject(t){t.thnkID=this.generateNewID(),this.registeredObjects.set(t.thnkID,t),this.createdObjects.set(t.thnkID,t.getName()),t.prevLayer=void 0,t.prevX=NaN,t.prevY=NaN,t.prevAngle=NaN,t.prevScale=NaN,t.prevZOrder=NaN,t.prevHeight=NaN,t.prevWidth=NaN,t.prevOpacity=NaN,t.prevFlippedX=void 0,t.prevFlippedY=void 0,t.prevVisibility=void 0,t.prevAnimation=NaN,t.prevText=void 0,t.prevColor=void 0,t.stateVariables=at.setupStateVariables(t.getVariables())}unregisterObject(t){this.recycledIDs.push(t.thnkID),this.registeredObjects.delete(t.thnkID),this.deletedObjects.add(t.thnkID),this.createdObjects.delete(t.thnkID),t.thnkID=void 0}createObjectsSnapshot(t,e){let i=[];for(let s of this.registeredObjects.values())i.push(Wn(t,s,e));return i}createdObjects=new Map;deletedObjects=new Set;getCreatedObjects(){let t=[...this.createdObjects.entries()];return this.createdObjects.clear(),t}getDeletedObjects(){let t=Uint16Array.from(this.deletedObjects.values());return this.deletedObjects.clear(),t}},$n=class{diffsCount;diffs;currentDiff=0;constructor(){this.diffsCount=Math.min(30,Zi()*4),this.diffs=new Array(this.diffsCount)}createSnapshot(t){let e=wa.createDiff(t);return e&&(this.diffs[++this.currentDiff%this.diffsCount]=e),e}getSnapshot(t){return this.currentDiff-t>this.diffsCount?null:this.diffs[t%this.diffsCount]}},wa=class{sceneDiff;constructor(){}static createDiff(t){let e=ya.createDiff(t);if(!e)return null;let i=new wa;return i.sceneDiff=e,i}serialize(t,e){return this.sceneDiff?.serialize(t,e)}},ya=class{publicStateVariableDiff;privateStateVariablesDiffs=new Map;teamStateVariablesDiffs=new Map;objectsDiff=new Map;deletedObjects=new Set;createdObjects=new Map;constructor(){}static createDiff(t){let{thnkServer:e}=t;if(!e)throw new Error(\"Impossible to take a diff snapshot when not running a THNK server!\");let{stateVariables:i,objectsRegistery:s}=e,{publicStateVariable:a,privateStateVariable:n,teamStateVariable:r}=i,o=new ya;a.isDirty()&&(o.publicStateVariableDiff=a.serializeToBinary());{let u=n.getAllChildren();for(let l in u)u[l].isDirty()&&o.privateStateVariablesDiffs.set(l,u[l].serializeToBinary())}{let u=r.getAllChildren();for(let l in u)u[l].isDirty()&&o.teamStateVariablesDiffs.set(l,u[l].serializeToBinary())}s.forEach(u=>{let l=ma.createDiff(u);l&&o.objectsDiff.set(u.thnkID,l)});for(let[u,l]of s.getCreatedObjects())o.createdObjects.set(u,l);for(let u of s.getDeletedObjects())o.deletedObjects.add(u);return o}serialize(t,e){let i=this.publicStateVariableDiff?G.createPublicStateDiffVector(t,this.publicStateVariableDiff):null,s=this.privateStateVariablesDiffs.get(e),a=s?G.createPrivateStateDiffVector(t,s):null,n=[];for(let l of this.objectsDiff.values())l.needsToBeSerialized(e)&&n.push(l.serialize(t,e));let r=n.length?G.createObjectsVector(t,n):null,o=null;if(this.createdObjects.size){let l=new Uint16Array(this.createdObjects.size),d=0;for(let[O,g]of this.createdObjects){let p=t.createSharedString(g);l[d++]=zt.createCreatedObject(t,O,p)}o=G.createCreatedObjectsVector(t,l)}let u=this.deletedObjects.size?G.createDeletedObjectsVector(t,[...this.deletedObjects]):null;return G.startScene(t),i&&G.addPublicStateDiff(t,i),a&&G.addPrivateStateDiff(t,a),r&&G.addObjects(t,r),o&&G.addCreatedObjects(t,o),u&&G.addDeletedObjects(t,u),G.endScene(t)}},ma=class{id;aabb;publicStateVariableDiff;privateStateVariablesDiffs=new Map;teamStateVariablesDiffs=new Map;propertyChanged=!1;layer;x;y;height;width;angle;zOrder;hidden;flippedX;flippedY;opacity;animation;string;color;constructor(t,e){this.id=t,this.aabb=e}static createDiff(t){let e=new ma(t.thnkID,t.getVisibilityAABB()||t.getAABB());t.getLayer()!==t.prevLayer&&(t.prevLayer=t.getLayer(),e.propertyChanged=!0,e.layer=t.getLayer()),t.getX()!==t.prevX&&(t.prevX=t.getX(),e.propertyChanged=!0,e.x=t.getX()),t.getY()!==t.prevY&&(t.prevY=t.getY(),e.propertyChanged=!0,e.y=t.getY()),t.getHeight()!==t.prevHeight&&(t.prevHeight=t.getHeight(),e.propertyChanged=!0,e.height=t.getHeight()),t.getWidth()!==t.prevWidth&&(t.prevWidth=t.getWidth(),e.propertyChanged=!0,e.width=t.getWidth()),t.getAngle()!==t.prevAngle&&(t.prevAngle=t.getAngle(),e.propertyChanged=!0,e.angle=t.getAngle()),t.getZOrder()!==t.prevZOrder&&(t.prevZOrder=t.getZOrder(),e.propertyChanged=!0,e.zOrder=t.getZOrder()),t.isHidden()!==t.prevVisibility&&(t.prevVisibility=t.isHidden(),e.propertyChanged=!0,e.hidden=t.isHidden()),t.isFlippedX&&t.isFlippedX()!==t.prevFlippedX&&(t.prevFlippedX=t.isFlippedX(),e.propertyChanged=!0,e.flippedX=t.isFlippedX()),t.isFlippedY&&t.isFlippedY()!==t.prevFlippedY&&(t.prevFlippedY=t.isFlippedY(),e.propertyChanged=!0,e.flippedY=t.isFlippedY()),t.getOpacity&&t.getOpacity()!==t.prevOpacity&&(t.prevOpacity=t.getOpacity(),e.propertyChanged=!0,e.opacity=t.getOpacity()),t.getString&&t.getString()!==t.prevText&&(t.prevText=t.getString(),e.propertyChanged=!0,e.string=t.getString()),t.getColor&&t.getColor()!==t.prevColor&&(t.prevColor=t.getColor(),e.propertyChanged=!0,e.color=t.getColor()),t.getAnimation&&t.getAnimation()!==t.prevAnimation&&(t.prevAnimation=t.getAnimation(),e.propertyChanged=!0,e.animation=t.getAnimation());let{publicStateVariable:i,privateStateVariable:s,teamStateVariable:a}=t.stateVariables;i.isDirty()&&(e.publicStateVariableDiff=i.serializeToBinary());{let n=s.getAllChildren();for(let r in n)n[r].isDirty()&&e.privateStateVariablesDiffs.set(r,n[r].serializeToBinary())}{let n=a.getAllChildren();for(let r in n)n[r].isDirty()&&e.teamStateVariablesDiffs.set(r,n[r].serializeToBinary())}return e.propertyChanged||e.publicStateVariableDiff||e.privateStateVariablesDiffs.size||e.teamStateVariablesDiffs.size?e:null}needsToBeSerialized(t){return this.propertyChanged||this.publicStateVariableDiff||this.privateStateVariablesDiffs.has(t)}serialize(t,e){let i=this.layer!==void 0?t.createSharedString(this.layer):null,s=this.string!==void 0?t.createSharedString(this.string):null;this.propertyChanged&&(j.startObjState(t),i&&j.addLayer(t,i),this.x!==void 0&&(this.x===0?j.addSetXTo0(t,!0):j.addX(t,this.x)),this.y!==void 0&&(this.y===0?j.addSetYTo0(t,!0):j.addY(t,this.y)),this.height!==void 0&&(this.height===0?j.addSetHeightTo0(t,!0):j.addHeight(t,this.height)),this.width!==void 0&&(this.width===0?j.addSetWidthTo0(t,!0):j.addWidth(t,this.width)),this.angle!==void 0&&(this.angle===0?j.addSetAngleTo0(t,!0):j.addAngle(t,this.angle)),this.zOrder!==void 0&&(this.zOrder<=65535?j.addZOrder(t,this.zOrder+1):j.addBigZOrder(t,this.zOrder+1)),this.hidden!==void 0&&j.addVisible(t,this.hidden?1:2),this.flippedX!==void 0&&j.addFlippedX(t,this.flippedX?1:2),this.flippedY!==void 0&&j.addFlippedY(t,this.flippedY?1:2),this.opacity!==void 0&&(this.opacity===0?j.addSetOpacityTo0(t,!0):j.addOpacity(t,this.opacity)),this.animation!==void 0&&j.addAnimation(t,this.animation+1),s&&j.addText(t,s),this.color!==void 0&&j.addTint(t,ga(t,this.color)));let a=this.propertyChanged?j.endObjState(t):null,n=this.publicStateVariableDiff?K.createPublicStateDiffVector(t,this.publicStateVariableDiff):null,r=this.privateStateVariablesDiffs.get(e),o=r?K.createPrivateStateDiffVector(t,r):null;return K.startGameObject(t),K.addId(t,this.id),a&&K.addObjState(t,a),n&&K.addPublicStateDiff(t,n),o&&K.addPrivateStateDiff(t,o),K.endGameObject(t)}},Qn=class{adapter;stateVariables;objectsRegistery=new qn;playerManager=new Xn;runServerCode=!0;previouslyConnectedUsers;snapshotsManager=new $n;constructor(t,e){this.adapter=t,this.stateVariables=e}},va=(t,e)=>{t.thnkServer=new Qn(e,at.setupStateVariables(t.getVariables())),pa()||t.thnkServer.playerManager._onConnect(e.getServerID())},Ii=new gdjs.Logger(\"THNK - Server\"),ni=0,Jn=t=>{if(!t.thnkServer)return;let{adapter:e}=t.thnkServer;for(let[s,a]of e.getUsersPendingMessages()){for(let n of a)switch(n.contentType()){case 1:if(t.thnkServer.playerManager.alreadyHas(s))continue;Fn(s,e,t),t.thnkServer.playerManager._onConnect(s);continue;case 2:let r=n.content(new Ot),o=r.name();if(!o)continue;let u=r.contentArray();Nn(s,o,u);continue;default:Ii.error(`Received message with unknown type '${n.contentType()}'`);continue}a.length=0}for(let s of e.getDisconnectedUsers())t.thnkServer.playerManager._onDisconnect(s);e.getDisconnectedUsers().length=0;let i=t.getTimeManager();ni+=i.getElapsedTime()/i.getTimeScale(),ni>1e3/Zi()&&(ni=0,t.thnkServer.runServerCode=!0);{let s=t.thnkServer.adapter.getServerID(),a=r=>{let o=r.getChild(s).getAllChildren();for(let u in o)r.addChild(u,o[u])},{privateStateVariable:n}=t.thnkServer.stateVariables;a(n),t.thnkServer.objectsRegistery.forEach(r=>a(r.getVariables().get(\"PlayerState\")))}},tr=t=>{if(!t.thnkServer||!t.thnkServer.runServerCode)return;t.thnkServer.runServerCode=!1;let{snapshotsManager:e}=t.thnkServer,i=e.createSnapshot(t);if(i)for(let s of t.thnkServer.playerManager.connectedPlayers.values())s!==t.thnkServer.adapter.getServerID()&&Dn(s,t.thnkServer.adapter,i)},ee=null,Sa=(t,e)=>{if(t.thnkServer){let{adapter:i}=t.thnkServer;ee={adapter:i,isPause:e},e&&(t.thnkServer.previouslyConnectedUsers=new Set(i.getConnectedUsers()))}},er=t=>{if(ee){let{adapter:e,isPause:i}=ee;va(t,e);for(let s of e.getConnectedUsers())t.thnkServer.playerManager._onConnect(s);Rn(e,t.getName(),i),ee=null}},ir=t=>{if(ee)if(t.thnkServer){let{adapter:e,previouslyConnectedUsers:i}=t.thnkServer;if(i){let s=[],a=[];for(let n of e.getConnectedUsers())i.has(n)?a.push(n):s.push(n);ai(s,e,t),ai(a,e)}else Ii.warn(\"List of previously connected players not found! A full snapshot will be sent to all players. This is likely a bug, please open an issue on the THNK GitHub page!\"),ai([...e.getConnectedUsers()],e,t)}else Ii.warn(\"Resumed a scene that is not a server, shutting the server down. This is likely a bug, please open an issue on the THNK GitHub page!\"),ee.adapter.close()};gdjs.registerRuntimeScenePreEventsCallback(Jn);gdjs.registerRuntimeScenePostEventsCallback(tr);gdjs.registerRuntimeSceneUnloadedCallback(t=>Sa(t,!1));gdjs.registerRuntimeScenePausedCallback(t=>Sa(t,!0));gdjs.registerRuntimeSceneLoadedCallback(er);gdjs.registerRuntimeSceneResumedCallback(ir);async function Xe(t,e){return t.areSceneAssetsReady(e)||await t.loadSceneAssets(e),t.getSceneStack().replace(e,!0)}async function sr(t,e){return t.areSceneAssetsReady(e)||await t.loadSceneAssets(e),t.getSceneStack().push(e)}var ar=new gdjs.Logger(\"THNK - Server\"),nr=async(t,e,i)=>{try{await t.prepare(e)}catch(n){ar.error(\"Adapter crashed while starting server! Error: \",n);return}let s=e.getGame(),a=i?await Xe(s,i):e;va(a,t)},rr={popMessage:Ln,addRawMessageToTheQueue:En,popConnection:Zn,popDisconnection:Hn},ka={};$e(ka,{getConnectionState:()=>fr,messages:()=>pr,startClient:()=>_r});var ae=(t,e)=>{switch(e.type()){case 1:return t.setString(e.text()),t;case 2:return t.setNumber(e.number()),t;case 3:return t.setBoolean(e.boolean()),t}if(e.type()===4){t.castTo(\"structure\");for(let i=e.operationsLength(),s=0,a=e.operations(0);s{let i=t.objState();if(i){let o=i.layer();o!==null&&e.setLayer(o);let u=i.x();u!==null&&e.setX(u);let l=i.y();l!==null&&e.setY(l);let d=i.height();d!==null&&e.setHeight(d);let O=i.width();O!==null&&e.setWidth(O);let g=i.angle();g!==null&&e.setAngle(g),i.setXTo0()&&e.setX(0),i.setYTo0()&&e.setY(0),i.setHeightTo0()&&e.setHeight(0),i.setWidthTo0()&&e.setWidth(0),i.setAngleTo0()&&e.setAngle(0);{let A=i.visible();A!==null&&e.hide(A===1);let k=i.flippedX();k!==null&&e.flipX&&e.flipX(k===1);let m=i.flippedY();m!==null&&e.flipY&&e.flipY(m===1)}let p=i.zOrder()??i.bigZOrder();p!==null&&e.setZOrder(p-1);let C=i.opacity();e.setOpacity&&(C!==null&&e.setOpacity(C),i.setOpacityTo0()&&e.setOpacity(0));let M=i.animation();M!==null&&e.setAnimation&&e.setAnimation(M-1);let U=i.text();if(U!==null&&e.setString&&e.setString(U),e.setColor){let A=i.tint(or);A&&e.setColor(`${A.r()};${A.g()};${A.b()}`)}}let s=e.getVariables().get(\"State\"),a=t.publicStateDiffArray();if(a)ae(s,N.getRootAsVariable(new Ut(a)));else{let o=t.packedPublicStateArray();o&&me(s,o)}let n=e.getVariables().get(\"PlayerState\"),r=t.privateStateDiffArray();if(r)ae(n,N.getRootAsVariable(new Ut(r)));else{let o=t.packedPrivateStateArray();o&&me(n,o)}},Aa=(t,e)=>{if(!e.thnkClient)return;let{objectsRegistery:i}=e.thnkClient,s=t.publicStatePackedArray();s&&me(e.getVariables().get(\"State\"),s);let a=t.privateStatePackedArray();if(a&&me(e.getVariables().get(\"PlayerState\"),a),i.clear(),t.objectsLength()!==0)for(let n=t.objectsLength(),r=0,o=t.objects(0);r{if(!e.thnkClient)return;let{objectsRegistery:i}=e.thnkClient,s=t.publicStateDiffArray();s&&ae(e.getVariables().get(\"State\"),N.getRootAsVariable(new Ut(s)));let a=t.privateStateDiffArray();a&&ae(e.getVariables().get(\"PlayerState\"),N.getRootAsVariable(new Ut(a)));let n=t.deletedObjectsArray();if(n)for(let r of n)i.deleteObject(r);if(t.createdObjectsLength()!==0)for(let r=t.createdObjectsLength(),o=0,u=t.createdObjects(0);ot.deleteFromScene(this.runtimeScene)),this.objectsRegistery.clear()}},xi=class{adapter;objectsRegistery;constructor(t,e){this.adapter=t,this.objectsRegistery=new dr(e)}},fs=new gdjs.Logger(\"THNK - Client\"),hr=async t=>{if(!t.thnkClient)return;let{adapter:e}=t.thnkClient,i=t.getGame();for(let s of e.getPendingMessages())switch(s.contentType()){case 1:fs.warn(\"A second ConnectionStartMessage was received from the server. This is likely a bug, please open an issue on the THNK GitHub!\");continue;case 2:let a=s.content(new jt).scene();a&&lr(a,t);continue;case 3:let n=s.content(new ut),r=n.sceneName();if(!r){console.error(\"Server requested scene switch, but no scene name was sent! This is likely a bug, please open an issue on the THNK GitHub!\");continue}let o=await(n.isPause()?sr(i,r):Xe(i,r));o.thnkClient=new xi(t.thnkClient.adapter,o),t=o;continue;case 4:let u=s.content(new ft),l=u.name(),d=l?await Xe(i,l):i.getSceneStack().pop();if(!d)continue;let O=u.snapshot();O&&Aa(O,d),d.thnkClient=new xi(t.thnkClient.adapter,d),t=d;continue;default:fs.error(`Received message with unknown type '${s.contentType()}'`)}e.markPendingMessagesAsRead()};gdjs.registerRuntimeScenePreEventsCallback(hr);var cr=(t,e)=>{let i=new Et(32),s=e?i.createString(e):null;Ft.startConnectionRequestMessage(i),s&&Ft.addToken(i,s);let a=Ft.endConnectionRequestMessage(i);t.sendClientMessage(i,At.createClientMessage(i,1,a))},br=(t,e,i)=>{let s=new Et(256),a=s.createString(e),n=Ot.createContentVector(s,ye(i)),r=Ot.createClientInputMessage(s,a,n);t.sendClientMessage(s,At.createClientMessage(s,2,r))},Ia=\"disconnected\",_e=t=>Ia=t,fr=()=>Ia,ur=new gdjs.Logger(\"THNK - Client\"),us=t=>{_e(\"failed\"),ur.error(\"Connection failed: \"+t)},_r=async(t,e)=>{_e(\"connecting\"),t.getGame().getSceneStack();try{await e.prepare(t)}catch{us(\"Adapter crashed while starting server!\");return}_e(\"loading\"),cr(e);let i=setInterval(async()=>{let s=e.getPendingMessages().shift();if(!!s&&s.contentType()===1){clearInterval(i);let a=s.content(new Ht),n=a.sceneName(),r=a.sceneSnapshot();if(!n||!r){us(\"Server Connection Start Message was invalid, couldn't finish setting up the connection.\");return}let o=await Xe(t.getGame(),n);o.thnkClient=new xi(e,o),Aa(r,o),_e(\"connected\")}},100)},pr={sendClientMessage:br};function oe(t){let e=t.length;for(;--e>=0;)t[e]=0}var gr=0,xa=1,wr=2,yr=3,mr=258,Hi=29,Te=256,Se=Te+1+Hi,ie=30,Yi=19,ja=2*Se+1,Yt=15,ri=16,vr=7,Gi=256,Ca=16,Ua=17,Ta=18,ji=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),He=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Sr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Va=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),kr=512,It=new Array((Se+2)*2);oe(It);var pe=new Array(ie*2);oe(pe);var ke=new Array(kr);oe(ke);var Oe=new Array(mr-yr+1);oe(Oe);var Xi=new Array(Hi);oe(Xi);var We=new Array(ie);oe(We);function oi(t,e,i,s,a){this.static_tree=t,this.extra_bits=e,this.extra_base=i,this.elems=s,this.max_length=a,this.has_stree=t&&t.length}var za,Fa,Da;function li(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}var Ra=t=>t<256?ke[t]:ke[256+(t>>>7)],Ae=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},rt=(t,e,i)=>{t.bi_valid>ri-i?(t.bi_buf|=e<>ri-t.bi_valid,t.bi_valid+=i-ri):(t.bi_buf|=e<{rt(t,i[e*2],i[e*2+1])},Pa=(t,e)=>{let i=0;do i|=t&1,t>>>=1,i<<=1;while(--e>0);return i>>>1},Or=t=>{t.bi_valid===16?(Ae(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},Ar=(t,e)=>{let i=e.dyn_tree,s=e.max_code,a=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,u=e.stat_desc.max_length,l,d,O,g,p,C,M=0;for(g=0;g<=Yt;g++)t.bl_count[g]=0;for(i[t.heap[t.heap_max]*2+1]=0,l=t.heap_max+1;lu&&(g=u,M++),i[d*2+1]=g,!(d>s)&&(t.bl_count[g]++,p=0,d>=o&&(p=r[d-o]),C=i[d*2],t.opt_len+=C*(g+p),n&&(t.static_len+=C*(a[d*2+1]+p)));if(M!==0){do{for(g=u-1;t.bl_count[g]===0;)g--;t.bl_count[g]--,t.bl_count[g+1]+=2,t.bl_count[u]--,M-=2}while(M>0);for(g=u;g!==0;g--)for(d=t.bl_count[g];d!==0;)O=t.heap[--l],!(O>s)&&(i[O*2+1]!==g&&(t.opt_len+=(g-i[O*2+1])*i[O*2],i[O*2+1]=g),d--)}},Ma=(t,e,i)=>{let s=new Array(Yt+1),a=0,n,r;for(n=1;n<=Yt;n++)a=a+i[n-1]<<1,s[n]=a;for(r=0;r<=e;r++){let o=t[r*2+1];o!==0&&(t[r*2]=Pa(s[o]++,o))}},Ir=()=>{let t,e,i,s,a,n=new Array(Yt+1);for(i=0,s=0;s>=7;s{let e;for(e=0;e{t.bi_valid>8?Ae(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},_s=(t,e,i,s)=>{let a=e*2,n=i*2;return t[a]{let s=t.heap[i],a=i<<1;for(;a<=t.heap_len&&(a{let s,a,n=0,r,o;if(t.sym_next!==0)do s=t.pending_buf[t.sym_buf+n++]&255,s+=(t.pending_buf[t.sym_buf+n++]&255)<<8,a=t.pending_buf[t.sym_buf+n++],s===0?yt(t,a,e):(r=Oe[a],yt(t,r+Te+1,e),o=ji[r],o!==0&&(a-=Xi[r],rt(t,a,o)),s--,r=Ra(s),yt(t,r,i),o=He[r],o!==0&&(s-=We[r],rt(t,s,o)));while(n{let i=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.has_stree,n=e.stat_desc.elems,r,o,u=-1,l;for(t.heap_len=0,t.heap_max=ja,r=0;r>1;r>=1;r--)di(t,i,r);l=n;do r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],di(t,i,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,i[l*2]=i[r*2]+i[o*2],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,i[r*2+1]=i[o*2+1]=l,t.heap[1]=l++,di(t,i,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],Ar(t,e),Ma(i,u,t.bl_count)},gs=(t,e,i)=>{let s,a=-1,n,r=e[0*2+1],o=0,u=7,l=4;for(r===0&&(u=138,l=3),e[(i+1)*2+1]=65535,s=0;s<=i;s++)n=r,r=e[(s+1)*2+1],!(++o{let s,a=-1,n,r=e[0*2+1],o=0,u=7,l=4;for(r===0&&(u=138,l=3),s=0;s<=i;s++)if(n=r,r=e[(s+1)*2+1],!(++o{let e;for(gs(t,t.dyn_ltree,t.l_desc.max_code),gs(t,t.dyn_dtree,t.d_desc.max_code),Ci(t,t.bl_desc),e=Yi-1;e>=3&&t.bl_tree[Va[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},jr=(t,e,i,s)=>{let a;for(rt(t,e-257,5),rt(t,i-1,5),rt(t,s-4,4),a=0;a{let e=4093624447,i;for(i=0;i<=31;i++,e>>>=1)if(e&1&&t.dyn_ltree[i*2]!==0)return 0;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return 1;for(i=32;i{ys||(Ir(),ys=!0),t.l_desc=new li(t.dyn_ltree,za),t.d_desc=new li(t.dyn_dtree,Fa),t.bl_desc=new li(t.bl_tree,Da),t.bi_buf=0,t.bi_valid=0,Ba(t)},Ea=(t,e,i,s)=>{rt(t,(gr<<1)+(s?1:0),3),Na(t),Ae(t,i),Ae(t,~i),i&&t.pending_buf.set(t.window.subarray(e,e+i),t.pending),t.pending+=i},Tr=t=>{rt(t,xa<<1,3),yt(t,Gi,It),Or(t)},Vr=(t,e,i,s)=>{let a,n,r=0;t.level>0?(t.strm.data_type===2&&(t.strm.data_type=Cr(t)),Ci(t,t.l_desc),Ci(t,t.d_desc),r=xr(t),a=t.opt_len+3+7>>>3,n=t.static_len+3+7>>>3,n<=a&&(a=n)):a=n=i+5,i+4<=a&&e!==-1?Ea(t,e,i,s):t.strategy===4||n===a?(rt(t,(xa<<1)+(s?1:0),3),ps(t,It,pe)):(rt(t,(wr<<1)+(s?1:0),3),jr(t,t.l_desc.max_code+1,t.d_desc.max_code+1,r+1),ps(t,t.dyn_ltree,t.dyn_dtree)),Ba(t),s&&Na(t)},zr=(t,e,i)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,e===0?t.dyn_ltree[i*2]++:(t.matches++,e--,t.dyn_ltree[(Oe[i]+Te+1)*2]++,t.dyn_dtree[Ra(e)*2]++),t.sym_next===t.sym_end),Fr=Ur,Dr=Ea,Rr=Vr,Pr=zr,Mr=Tr,Br={_tr_init:Fr,_tr_stored_block:Dr,_tr_flush_block:Rr,_tr_tally:Pr,_tr_align:Mr},Nr=(t,e,i,s)=>{let a=t&65535|0,n=t>>>16&65535|0,r=0;for(;i!==0;){r=i>2e3?2e3:i,i-=r;do a=a+e[s++]|0,n=n+a|0;while(--r);a%=65521,n%=65521}return a|n<<16|0},Ie=Nr,Er=()=>{let t,e=[];for(var i=0;i<256;i++){t=i;for(var s=0;s<8;s++)t=t&1?3988292384^t>>>1:t>>>1;e[i]=t}return e},Lr=new Uint32Array(Er()),Zr=(t,e,i,s)=>{let a=Lr,n=s+i;t^=-1;for(let r=s;r>>8^a[(t^e[r])&255];return t^-1},J=Zr,Wt={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"},le={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:Hr,_tr_stored_block:Ui,_tr_flush_block:Yr,_tr_tally:Mt,_tr_align:Gr}=Br,{Z_NO_FLUSH:Bt,Z_PARTIAL_FLUSH:Xr,Z_FULL_FLUSH:Wr,Z_FINISH:bt,Z_BLOCK:ms,Z_OK:et,Z_STREAM_END:vs,Z_STREAM_ERROR:mt,Z_DATA_ERROR:Kr,Z_BUF_ERROR:hi,Z_DEFAULT_COMPRESSION:qr,Z_FILTERED:$r,Z_HUFFMAN_ONLY:Me,Z_RLE:Qr,Z_FIXED:Jr,Z_DEFAULT_STRATEGY:to,Z_UNKNOWN:eo,Z_DEFLATED:Je}=le,io=9,so=15,ao=8,no=29,ro=256,Ti=ro+1+no,oo=30,lo=19,ho=2*Ti+1,co=15,D=3,Pt=258,vt=Pt+D+1,bo=32,ne=42,Wi=57,Vi=69,zi=73,Fi=91,Di=103,Gt=113,fe=666,nt=1,de=2,Kt=3,he=4,fo=3,Xt=(t,e)=>(t.msg=Wt[e],e),Ss=t=>t*2-(t>4?9:0),Dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},uo=t=>{let e,i,s,a=t.w_size;e=t.hash_size,s=e;do i=t.head[--s],t.head[s]=i>=a?i-a:0;while(--e);e=a,s=e;do i=t.prev[--s],t.prev[s]=i>=a?i-a:0;while(--e)},_o=(t,e,i)=>(e<{let e=t.state,i=e.pending;i>t.avail_out&&(i=t.avail_out),i!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+i),t.next_out),t.next_out+=i,e.pending_out+=i,t.total_out+=i,t.avail_out-=i,e.pending-=i,e.pending===0&&(e.pending_out=0))},lt=(t,e)=>{Yr(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ot(t.strm)},B=(t,e)=>{t.pending_buf[t.pending++]=e},be=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},Ri=(t,e,i,s)=>{let a=t.avail_in;return a>s&&(a=s),a===0?0:(t.avail_in-=a,e.set(t.input.subarray(t.next_in,t.next_in+a),i),t.state.wrap===1?t.adler=Ie(t.adler,e,a,i):t.state.wrap===2&&(t.adler=J(t.adler,e,a,i)),t.next_in+=a,t.total_in+=a,a)},La=(t,e)=>{let i=t.max_chain_length,s=t.strstart,a,n,r=t.prev_length,o=t.nice_match,u=t.strstart>t.w_size-vt?t.strstart-(t.w_size-vt):0,l=t.window,d=t.w_mask,O=t.prev,g=t.strstart+Pt,p=l[s+r-1],C=l[s+r];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do if(a=e,!(l[a+r]!==C||l[a+r-1]!==p||l[a]!==l[s]||l[++a]!==l[s+1])){s+=2,a++;do;while(l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&l[++s]===l[++a]&&sr){if(t.match_start=e,r=n,n>=o)break;p=l[s+r-1],C=l[s+r]}}while((e=O[e&d])>u&&--i!==0);return r<=t.lookahead?r:t.lookahead},re=t=>{let e=t.w_size,i,s,a;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-vt)&&(t.window.set(t.window.subarray(e,e+e-s),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),uo(t),s+=e),t.strm.avail_in===0)break;if(i=Ri(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=i,t.lookahead+t.insert>=D)for(a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=Nt(t,t.ins_h,t.window[a+1]);t.insert&&(t.ins_h=Nt(t,t.ins_h,t.window[a+D-1]),t.prev[a&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=a,a++,t.insert--,!(t.lookahead+t.insert{let i=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,s,a,n,r=0,o=t.strm.avail_in;do{if(s=65535,n=t.bi_valid+42>>3,t.strm.avail_outa+t.strm.avail_in&&(s=a+t.strm.avail_in),s>n&&(s=n),s>8,t.pending_buf[t.pending-2]=~s,t.pending_buf[t.pending-1]=~s>>8,ot(t.strm),a&&(a>s&&(a=s),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+a),t.strm.next_out),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a,t.block_start+=a,s-=a),s&&(Ri(t.strm,t.strm.output,t.strm.next_out,s),t.strm.next_out+=s,t.strm.avail_out-=s,t.strm.total_out+=s)}while(r===0);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Ri(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,i=n>t.w_size?t.w_size:n,a=t.strstart-t.block_start,(a>=i||(a||e===bt)&&e!==Bt&&t.strm.avail_in===0&&a<=n)&&(s=a>n?n:a,r=e===bt&&t.strm.avail_in===0&&s===a?1:0,Ui(t,t.block_start,s,r),t.block_start+=s,ot(t.strm)),r?Kt:nt)},ci=(t,e)=>{let i,s;for(;;){if(t.lookahead=D&&(t.ins_h=Nt(t,t.ins_h,t.window[t.strstart+D-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),i!==0&&t.strstart-i<=t.w_size-vt&&(t.match_length=La(t,i)),t.match_length>=D)if(s=Mt(t,t.strstart-t.match_start,t.match_length-D),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=D){t.match_length--;do t.strstart++,t.ins_h=Nt(t,t.ins_h,t.window[t.strstart+D-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Nt(t,t.ins_h,t.window[t.strstart+1]);else s=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(s&&(lt(t,!1),t.strm.avail_out===0))return nt}return t.insert=t.strstart{let i,s,a;for(;;){if(t.lookahead=D&&(t.ins_h=Nt(t,t.ins_h,t.window[t.strstart+D-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=D-1,i!==0&&t.prev_length4096)&&(t.match_length=D-1)),t.prev_length>=D&&t.match_length<=t.prev_length){a=t.strstart+t.lookahead-D,s=Mt(t,t.strstart-1-t.prev_match,t.prev_length-D),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=a&&(t.ins_h=Nt(t,t.ins_h,t.window[t.strstart+D-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=D-1,t.strstart++,s&&(lt(t,!1),t.strm.avail_out===0))return nt}else if(t.match_available){if(s=Mt(t,0,t.window[t.strstart-1]),s&<(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return nt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(s=Mt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart{let i,s,a,n,r=t.window;for(;;){if(t.lookahead<=Pt){if(re(t),t.lookahead<=Pt&&e===Bt)return nt;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=D&&t.strstart>0&&(a=t.strstart-1,s=r[a],s===r[++a]&&s===r[++a]&&s===r[++a])){n=t.strstart+Pt;do;while(s===r[++a]&&s===r[++a]&&s===r[++a]&&s===r[++a]&&s===r[++a]&&s===r[++a]&&s===r[++a]&&s===r[++a]&&at.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=D?(i=Mt(t,1,t.match_length-D),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(i=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),i&&(lt(t,!1),t.strm.avail_out===0))return nt}return t.insert=0,e===bt?(lt(t,!0),t.strm.avail_out===0?Kt:he):t.sym_next&&(lt(t,!1),t.strm.avail_out===0)?nt:de},go=(t,e)=>{let i;for(;;){if(t.lookahead===0&&(re(t),t.lookahead===0)){if(e===Bt)return nt;break}if(t.match_length=0,i=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,i&&(lt(t,!1),t.strm.avail_out===0))return nt}return t.insert=0,e===bt?(lt(t,!0),t.strm.avail_out===0?Kt:he):t.sym_next&&(lt(t,!1),t.strm.avail_out===0)?nt:de};function gt(t,e,i,s,a){this.good_length=t,this.max_lazy=e,this.nice_length=i,this.max_chain=s,this.func=a}var ue=[new gt(0,0,0,0,Za),new gt(4,4,8,4,ci),new gt(4,5,16,8,ci),new gt(4,6,32,32,ci),new gt(4,4,16,16,Jt),new gt(8,16,32,32,Jt),new gt(8,16,128,128,Jt),new gt(8,32,128,256,Jt),new gt(32,128,258,1024,Jt),new gt(32,258,258,4096,Jt)],wo=t=>{t.window_size=2*t.w_size,Dt(t.head),t.max_lazy_match=ue[t.level].max_lazy,t.good_match=ue[t.level].good_length,t.nice_match=ue[t.level].nice_length,t.max_chain_length=ue[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=D-1,t.match_available=0,t.ins_h=0};function yo(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Je,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(ho*2),this.dyn_dtree=new Uint16Array((2*oo+1)*2),this.bl_tree=new Uint16Array((2*lo+1)*2),Dt(this.dyn_ltree),Dt(this.dyn_dtree),Dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(co+1),this.heap=new Uint16Array(2*Ti+1),Dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Ti+1),Dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Ve=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.status!==ne&&e.status!==Wi&&e.status!==Vi&&e.status!==zi&&e.status!==Fi&&e.status!==Di&&e.status!==Gt&&e.status!==fe?1:0},Ha=t=>{if(Ve(t))return Xt(t,mt);t.total_in=t.total_out=0,t.data_type=eo;let e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap===2?Wi:e.wrap?ne:Gt,t.adler=e.wrap===2?0:1,e.last_flush=-2,Hr(e),et},Ya=t=>{let e=Ha(t);return e===et&&wo(t.state),e},mo=(t,e)=>Ve(t)||t.state.wrap!==2?mt:(t.state.gzhead=e,et),Ga=(t,e,i,s,a,n)=>{if(!t)return mt;let r=1;if(e===qr&&(e=6),s<0?(r=0,s=-s):s>15&&(r=2,s-=16),a<1||a>io||i!==Je||s<8||s>15||e<0||e>9||n<0||n>Jr||s===8&&r!==1)return Xt(t,mt);s===8&&(s=9);let o=new yo;return t.state=o,o.strm=t,o.status=ne,o.wrap=r,o.gzhead=null,o.w_bits=s,o.w_size=1<Ga(t,e,Je,so,ao,to),So=(t,e)=>{if(Ve(t)||e>ms||e<0)return t?Xt(t,mt):mt;let i=t.state;if(!t.output||t.avail_in!==0&&!t.input||i.status===fe&&e!==bt)return Xt(t,t.avail_out===0?hi:mt);let s=i.last_flush;if(i.last_flush=e,i.pending!==0){if(ot(t),t.avail_out===0)return i.last_flush=-1,et}else if(t.avail_in===0&&Ss(e)<=Ss(s)&&e!==bt)return Xt(t,hi);if(i.status===fe&&t.avail_in!==0)return Xt(t,hi);if(i.status===ne&&i.wrap===0&&(i.status=Gt),i.status===ne){let a=Je+(i.w_bits-8<<4)<<8,n=-1;if(i.strategy>=Me||i.level<2?n=0:i.level<6?n=1:i.level===6?n=2:n=3,a|=n<<6,i.strstart!==0&&(a|=bo),a+=31-a%31,be(i,a),i.strstart!==0&&(be(i,t.adler>>>16),be(i,t.adler&65535)),t.adler=1,i.status=Gt,ot(t),i.pending!==0)return i.last_flush=-1,et}if(i.status===Wi){if(t.adler=0,B(i,31),B(i,139),B(i,8),i.gzhead)B(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),B(i,i.gzhead.time&255),B(i,i.gzhead.time>>8&255),B(i,i.gzhead.time>>16&255),B(i,i.gzhead.time>>24&255),B(i,i.level===9?2:i.strategy>=Me||i.level<2?4:0),B(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(B(i,i.gzhead.extra.length&255),B(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=J(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Vi;else if(B(i,0),B(i,0),B(i,0),B(i,0),B(i,0),B(i,i.level===9?2:i.strategy>=Me||i.level<2?4:0),B(i,fo),i.status=Gt,ot(t),i.pending!==0)return i.last_flush=-1,et}if(i.status===Vi){if(i.gzhead.extra){let a=i.pending,n=(i.gzhead.extra.length&65535)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>a&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a)),i.gzindex+=o,ot(t),i.pending!==0)return i.last_flush=-1,et;a=0,n-=o}let r=new Uint8Array(i.gzhead.extra);i.pending_buf.set(r.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>a&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a)),i.gzindex=0}i.status=zi}if(i.status===zi){if(i.gzhead.name){let a=i.pending,n;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>a&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a)),ot(t),i.pending!==0)return i.last_flush=-1,et;a=0}i.gzindexa&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a)),i.gzindex=0}i.status=Fi}if(i.status===Fi){if(i.gzhead.comment){let a=i.pending,n;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>a&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a)),ot(t),i.pending!==0)return i.last_flush=-1,et;a=0}i.gzindexa&&(t.adler=J(t.adler,i.pending_buf,i.pending-a,a))}i.status=Di}if(i.status===Di){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(ot(t),i.pending!==0))return i.last_flush=-1,et;B(i,t.adler&255),B(i,t.adler>>8&255),t.adler=0}if(i.status=Gt,ot(t),i.pending!==0)return i.last_flush=-1,et}if(t.avail_in!==0||i.lookahead!==0||e!==Bt&&i.status!==fe){let a=i.level===0?Za(i,e):i.strategy===Me?go(i,e):i.strategy===Qr?po(i,e):ue[i.level].func(i,e);if((a===Kt||a===he)&&(i.status=fe),a===nt||a===Kt)return t.avail_out===0&&(i.last_flush=-1),et;if(a===de&&(e===Xr?Gr(i):e!==ms&&(Ui(i,0,0,!1),e===Wr&&(Dt(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),ot(t),t.avail_out===0))return i.last_flush=-1,et}return e!==bt?et:i.wrap<=0?vs:(i.wrap===2?(B(i,t.adler&255),B(i,t.adler>>8&255),B(i,t.adler>>16&255),B(i,t.adler>>24&255),B(i,t.total_in&255),B(i,t.total_in>>8&255),B(i,t.total_in>>16&255),B(i,t.total_in>>24&255)):(be(i,t.adler>>>16),be(i,t.adler&65535)),ot(t),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?et:vs)},ko=t=>{if(Ve(t))return mt;let e=t.state.status;return t.state=null,e===Gt?Xt(t,Kr):et},Oo=(t,e)=>{let i=e.length;if(Ve(t))return mt;let s=t.state,a=s.wrap;if(a===2||a===1&&s.status!==ne||s.lookahead)return mt;if(a===1&&(t.adler=Ie(t.adler,e,i,0)),s.wrap=0,i>=s.w_size){a===0&&(Dt(s.head),s.strstart=0,s.block_start=0,s.insert=0);let u=new Uint8Array(s.w_size);u.set(e.subarray(i-s.w_size,i),0),e=u,i=s.w_size}let n=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=i,t.next_in=0,t.input=e,re(s);s.lookahead>=D;){let u=s.strstart,l=s.lookahead-(D-1);do s.ins_h=Nt(s,s.ins_h,s.window[u+D-1]),s.prev[u&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=u,u++;while(--l);s.strstart=u,s.lookahead=D-1,re(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=D-1,s.match_available=0,t.next_in=r,t.input=o,t.avail_in=n,s.wrap=a,et},Ao=vo,Io=Ga,xo=Ya,jo=Ha,Co=mo,Uo=So,To=ko,Vo=Oo,zo=\"pako deflate (from Nodeca project)\",ge={deflateInit:Ao,deflateInit2:Io,deflateReset:xo,deflateResetKeep:jo,deflateSetHeader:Co,deflate:Uo,deflateEnd:To,deflateSetDictionary:Vo,deflateInfo:zo},Fo=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Do=function(t){let e=Array.prototype.slice.call(arguments,1);for(;e.length;){let i=e.shift();if(i){if(typeof i!=\"object\")throw new TypeError(i+\"must be non-object\");for(let s in i)Fo(i,s)&&(t[s]=i[s])}}return t},Ro=t=>{let e=0;for(let s=0,a=t.length;s=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;xe[254]=xe[254]=1;var Po=t=>{if(typeof TextEncoder==\"function\"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,i,s,a,n,r=t.length,o=0;for(a=0;a>>6,e[n++]=128|i&63):i<65536?(e[n++]=224|i>>>12,e[n++]=128|i>>>6&63,e[n++]=128|i&63):(e[n++]=240|i>>>18,e[n++]=128|i>>>12&63,e[n++]=128|i>>>6&63,e[n++]=128|i&63);return e},Mo=(t,e)=>{if(e<65534&&t.subarray&&Xa)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let i=\"\";for(let s=0;s{let i=e||t.length;if(typeof TextDecoder==\"function\"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let s,a,n=new Array(i*2);for(a=0,s=0;s4){n[a++]=65533,s+=o-1;continue}for(r&=o===2?31:o===3?15:7;o>1&&s1){n[a++]=65533;continue}r<65536?n[a++]=r:(r-=65536,n[a++]=55296|r>>10&1023,n[a++]=56320|r&1023)}return Mo(n,a)},No=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let i=e-1;for(;i>=0&&(t[i]&192)===128;)i--;return i<0||i===0?e:i+xe[t[i]]>e?i:e},je={string2buf:Po,buf2string:Bo,utf8border:No};function Eo(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}var Wa=Eo,Ka=Object.prototype.toString,{Z_NO_FLUSH:Lo,Z_SYNC_FLUSH:Zo,Z_FULL_FLUSH:Ho,Z_FINISH:Yo,Z_OK:Ke,Z_STREAM_END:Go,Z_DEFAULT_COMPRESSION:Xo,Z_DEFAULT_STRATEGY:Wo,Z_DEFLATED:Ko}=le;function ze(t){this.options=ti.assign({level:Xo,method:Ko,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wo},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Wa,this.strm.avail_out=0;let i=ge.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(i!==Ke)throw new Error(Wt[i]);if(e.header&&ge.deflateSetHeader(this.strm,e.header),e.dictionary){let s;if(typeof e.dictionary==\"string\"?s=je.string2buf(e.dictionary):Ka.call(e.dictionary)===\"[object ArrayBuffer]\"?s=new Uint8Array(e.dictionary):s=e.dictionary,i=ge.deflateSetDictionary(this.strm,s),i!==Ke)throw new Error(Wt[i]);this._dict_set=!0}}ze.prototype.push=function(t,e){let i=this.strm,s=this.options.chunkSize,a,n;if(this.ended)return!1;for(e===~~e?n=e:n=e===!0?Yo:Lo,typeof t==\"string\"?i.input=je.string2buf(t):Ka.call(t)===\"[object ArrayBuffer]\"?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;;){if(i.avail_out===0&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),(n===Zo||n===Ho)&&i.avail_out<=6){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(a=ge.deflate(i,n),a===Go)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),a=ge.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===Ke;if(i.avail_out===0){this.onData(i.output);continue}if(n>0&&i.next_out>0){this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;continue}if(i.avail_in===0)break}return!0};ze.prototype.onData=function(t){this.chunks.push(t)};ze.prototype.onEnd=function(t){t===Ke&&(this.result=ti.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Ki(t,e){let i=new ze(e);if(i.push(t,!0),i.err)throw i.msg||Wt[i.err];return i.result}function qo(t,e){return e=e||{},e.raw=!0,Ki(t,e)}function $o(t,e){return e=e||{},e.gzip=!0,Ki(t,e)}var Qo=ze,Jo=Ki,tl=qo,el=$o,il=le,sl={Deflate:Qo,deflate:Jo,deflateRaw:tl,gzip:el,constants:il},Be=16209,al=16191,nl=function(t,e){let i,s,a,n,r,o,u,l,d,O,g,p,C,M,U,A,k,m,I,H,F,z,b,y,_=t.state;i=t.next_in,b=t.input,s=i+(t.avail_in-5),a=t.next_out,y=t.output,n=a-(e-t.avail_out),r=a+(t.avail_out-257),o=_.dmax,u=_.wsize,l=_.whave,d=_.wnext,O=_.window,g=_.hold,p=_.bits,C=_.lencode,M=_.distcode,U=(1<<_.lenbits)-1,A=(1<<_.distbits)-1;t:do{p<15&&(g+=b[i++]<>>24,g>>>=m,p-=m,m=k>>>16&255,m===0)y[a++]=k&65535;else if(m&16){I=k&65535,m&=15,m&&(p>>=m,p-=m),p<15&&(g+=b[i++]<>>24,g>>>=m,p-=m,m=k>>>16&255,m&16){if(H=k&65535,m&=15,po){t.msg=\"invalid distance too far back\",_.mode=Be;break t}if(g>>>=m,p-=m,m=a-n,H>m){if(m=H-m,m>l&&_.sane){t.msg=\"invalid distance too far back\",_.mode=Be;break t}if(F=0,z=O,d===0){if(F+=u-m,m2;)y[a++]=z[F++],y[a++]=z[F++],y[a++]=z[F++],I-=3;I&&(y[a++]=z[F++],I>1&&(y[a++]=z[F++]))}else{F=a-H;do y[a++]=y[F++],y[a++]=y[F++],y[a++]=y[F++],I-=3;while(I>2);I&&(y[a++]=y[F++],I>1&&(y[a++]=y[F++]))}}else if((m&64)===0){k=M[(k&65535)+(g&(1<>3,i-=I,p-=I<<3,g&=(1<{let u=o.bits,l=0,d=0,O=0,g=0,p=0,C=0,M=0,U=0,A=0,k=0,m,I,H,F,z,b=null,y,_=new Uint16Array(te+1),w=new Uint16Array(te+1),S=null,V,T,x;for(l=0;l<=te;l++)_[l]=0;for(d=0;d=1&&_[g]===0;g--);if(p>g&&(p=g),g===0)return a[n++]=1<<24|64<<16|0,a[n++]=1<<24|64<<16|0,o.bits=1,0;for(O=1;O0&&(t===As||g!==1))return-1;for(w[1]=0,l=1;lks||t===Is&&A>Os)return 1;for(;;){V=l-M,r[d]+1=y?(T=S[r[d]-y],x=b[r[d]-y]):(T=32+64,x=0),m=1<>M)+I]=V<<24|T<<16|x|0;while(I!==0);for(m=1<>=1;if(m!==0?(k&=m-1,k+=m):k=0,d++,--_[l]===0){if(l===g)break;l=e[i+r[d]]}if(l>p&&(k&F)!==H){for(M===0&&(M=p),z+=O,C=l-M,U=1<ks||t===Is&&A>Os)return 1;H=k&F,a[H]=p<<24|C<<16|z-n|0}}return k!==0&&(a[z+k]=l-M<<24|64<<16|0),o.bits=p,0},we=hl,cl=0,qa=1,$a=2,{Z_FINISH:xs,Z_BLOCK:bl,Z_TREES:Ne,Z_OK:qt,Z_STREAM_END:fl,Z_NEED_DICT:ul,Z_STREAM_ERROR:pt,Z_DATA_ERROR:Qa,Z_MEM_ERROR:Ja,Z_BUF_ERROR:_l,Z_DEFLATED:js}=le,ei=16180,Cs=16181,Us=16182,Ts=16183,Vs=16184,zs=16185,Fs=16186,Ds=16187,Rs=16188,Ps=16189,qe=16190,kt=16191,fi=16192,Ms=16193,ui=16194,Bs=16195,Ns=16196,Es=16197,Ls=16198,Ee=16199,Le=16200,Zs=16201,Hs=16202,Ys=16203,Gs=16204,Xs=16205,_i=16206,Ws=16207,Ks=16208,Z=16209,tn=16210,en=16211,pl=852,gl=592,wl=15,yl=wl,qs=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function ml(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var $t=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.modeen?1:0},sn=t=>{if($t(t))return pt;let e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=e.wrap&1),e.mode=ei,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(pl),e.distcode=e.distdyn=new Int32Array(gl),e.sane=1,e.back=-1,qt},an=t=>{if($t(t))return pt;let e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,sn(t)},nn=(t,e)=>{let i;if($t(t))return pt;let s=t.state;return e<0?(i=0,e=-e):(i=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?pt:(s.window!==null&&s.wbits!==e&&(s.window=null),s.wrap=i,s.wbits=e,an(t))},rn=(t,e)=>{if(!t)return pt;let i=new ml;t.state=i,i.strm=t,i.window=null,i.mode=ei;let s=nn(t,e);return s!==qt&&(t.state=null),s},vl=t=>rn(t,yl),$s=!0,pi,gi,Sl=t=>{if($s){pi=new Int32Array(512),gi=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(we(qa,t.lens,0,288,pi,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;we($a,t.lens,0,32,gi,0,t.work,{bits:5}),$s=!1}t.lencode=pi,t.lenbits=9,t.distcode=gi,t.distbits=5},on=(t,e,i,s)=>{let a,n=t.state;return n.window===null&&(n.wsize=1<=n.wsize?(n.window.set(e.subarray(i-n.wsize,i),0),n.wnext=0,n.whave=n.wsize):(a=n.wsize-n.wnext,a>s&&(a=s),n.window.set(e.subarray(i-s,i-s+a),n.wnext),s-=a,s?(n.window.set(e.subarray(i-s,i),0),n.wnext=s,n.whave=n.wsize):(n.wnext+=a,n.wnext===n.wsize&&(n.wnext=0),n.whave{let i,s,a,n,r,o,u,l,d,O,g,p,C,M,U=0,A,k,m,I,H,F,z,b,y=new Uint8Array(4),_,w,S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if($t(t)||!t.output||!t.input&&t.avail_in!==0)return pt;i=t.state,i.mode===kt&&(i.mode=fi),r=t.next_out,a=t.output,u=t.avail_out,n=t.next_in,s=t.input,o=t.avail_in,l=i.hold,d=i.bits,O=o,g=u,b=qt;t:for(;;)switch(i.mode){case ei:if(i.wrap===0){i.mode=fi;break}for(;d<16;){if(o===0)break t;o--,l+=s[n++]<>>8&255,i.check=J(i.check,y,2,0),l=0,d=0,i.mode=Cs;break}if(i.head&&(i.head.done=!1),!(i.wrap&1)||(((l&255)<<8)+(l>>8))%31){t.msg=\"incorrect header check\",i.mode=Z;break}if((l&15)!==js){t.msg=\"unknown compression method\",i.mode=Z;break}if(l>>>=4,d-=4,z=(l&15)+8,i.wbits===0&&(i.wbits=z),z>15||z>i.wbits){t.msg=\"invalid window size\",i.mode=Z;break}i.dmax=1<>8&1),i.flags&512&&i.wrap&4&&(y[0]=l&255,y[1]=l>>>8&255,i.check=J(i.check,y,2,0)),l=0,d=0,i.mode=Us;case Us:for(;d<32;){if(o===0)break t;o--,l+=s[n++]<>>8&255,y[2]=l>>>16&255,y[3]=l>>>24&255,i.check=J(i.check,y,4,0)),l=0,d=0,i.mode=Ts;case Ts:for(;d<16;){if(o===0)break t;o--,l+=s[n++]<>8),i.flags&512&&i.wrap&4&&(y[0]=l&255,y[1]=l>>>8&255,i.check=J(i.check,y,2,0)),l=0,d=0,i.mode=Vs;case Vs:if(i.flags&1024){for(;d<16;){if(o===0)break t;o--,l+=s[n++]<>>8&255,i.check=J(i.check,y,2,0)),l=0,d=0}else i.head&&(i.head.extra=null);i.mode=zs;case zs:if(i.flags&1024&&(p=i.length,p>o&&(p=o),p&&(i.head&&(z=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(s.subarray(n,n+p),z)),i.flags&512&&i.wrap&4&&(i.check=J(i.check,s,p,n)),o-=p,n+=p,i.length-=p),i.length))break t;i.length=0,i.mode=Fs;case Fs:if(i.flags&2048){if(o===0)break t;p=0;do z=s[n+p++],i.head&&z&&i.length<65536&&(i.head.name+=String.fromCharCode(z));while(z&&p>9&1,i.head.done=!0),t.adler=i.check=0,i.mode=kt;break;case Ps:for(;d<32;){if(o===0)break t;o--,l+=s[n++]<>>=d&7,d-=d&7,i.mode=_i;break}for(;d<3;){if(o===0)break t;o--,l+=s[n++]<>>=1,d-=1,l&3){case 0:i.mode=Ms;break;case 1:if(Sl(i),i.mode=Ee,e===Ne){l>>>=2,d-=2;break t}break;case 2:i.mode=Ns;break;case 3:t.msg=\"invalid block type\",i.mode=Z}l>>>=2,d-=2;break;case Ms:for(l>>>=d&7,d-=d&7;d<32;){if(o===0)break t;o--,l+=s[n++]<>>16^65535)){t.msg=\"invalid stored block lengths\",i.mode=Z;break}if(i.length=l&65535,l=0,d=0,i.mode=ui,e===Ne)break t;case ui:i.mode=Bs;case Bs:if(p=i.length,p){if(p>o&&(p=o),p>u&&(p=u),p===0)break t;a.set(s.subarray(n,n+p),r),o-=p,n+=p,u-=p,r+=p,i.length-=p;break}i.mode=kt;break;case Ns:for(;d<14;){if(o===0)break t;o--,l+=s[n++]<>>=5,d-=5,i.ndist=(l&31)+1,l>>>=5,d-=5,i.ncode=(l&15)+4,l>>>=4,d-=4,i.nlen>286||i.ndist>30){t.msg=\"too many length or distance symbols\",i.mode=Z;break}i.have=0,i.mode=Es;case Es:for(;i.have>>=3,d-=3}for(;i.have<19;)i.lens[S[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,_={bits:i.lenbits},b=we(cl,i.lens,0,19,i.lencode,0,i.work,_),i.lenbits=_.bits,b){t.msg=\"invalid code lengths set\",i.mode=Z;break}i.have=0,i.mode=Ls;case Ls:for(;i.have>>24,k=U>>>16&255,m=U&65535,!(A<=d);){if(o===0)break t;o--,l+=s[n++]<>>=A,d-=A,i.lens[i.have++]=m;else{if(m===16){for(w=A+2;d>>=A,d-=A,i.have===0){t.msg=\"invalid bit length repeat\",i.mode=Z;break}z=i.lens[i.have-1],p=3+(l&3),l>>>=2,d-=2}else if(m===17){for(w=A+3;d>>=A,d-=A,z=0,p=3+(l&7),l>>>=3,d-=3}else{for(w=A+7;d>>=A,d-=A,z=0,p=11+(l&127),l>>>=7,d-=7}if(i.have+p>i.nlen+i.ndist){t.msg=\"invalid bit length repeat\",i.mode=Z;break}for(;p--;)i.lens[i.have++]=z}}if(i.mode===Z)break;if(i.lens[256]===0){t.msg=\"invalid code -- missing end-of-block\",i.mode=Z;break}if(i.lenbits=9,_={bits:i.lenbits},b=we(qa,i.lens,0,i.nlen,i.lencode,0,i.work,_),i.lenbits=_.bits,b){t.msg=\"invalid literal/lengths set\",i.mode=Z;break}if(i.distbits=6,i.distcode=i.distdyn,_={bits:i.distbits},b=we($a,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,_),i.distbits=_.bits,b){t.msg=\"invalid distances set\",i.mode=Z;break}if(i.mode=Ee,e===Ne)break t;case Ee:i.mode=Le;case Le:if(o>=6&&u>=258){t.next_out=r,t.avail_out=u,t.next_in=n,t.avail_in=o,i.hold=l,i.bits=d,nl(t,g),r=t.next_out,a=t.output,u=t.avail_out,n=t.next_in,s=t.input,o=t.avail_in,l=i.hold,d=i.bits,i.mode===kt&&(i.back=-1);break}for(i.back=0;U=i.lencode[l&(1<>>24,k=U>>>16&255,m=U&65535,!(A<=d);){if(o===0)break t;o--,l+=s[n++]<>I)],A=U>>>24,k=U>>>16&255,m=U&65535,!(I+A<=d);){if(o===0)break t;o--,l+=s[n++]<>>=I,d-=I,i.back+=I}if(l>>>=A,d-=A,i.back+=A,i.length=m,k===0){i.mode=Xs;break}if(k&32){i.back=-1,i.mode=kt;break}if(k&64){t.msg=\"invalid literal/length code\",i.mode=Z;break}i.extra=k&15,i.mode=Zs;case Zs:if(i.extra){for(w=i.extra;d>>=i.extra,d-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=Hs;case Hs:for(;U=i.distcode[l&(1<>>24,k=U>>>16&255,m=U&65535,!(A<=d);){if(o===0)break t;o--,l+=s[n++]<>I)],A=U>>>24,k=U>>>16&255,m=U&65535,!(I+A<=d);){if(o===0)break t;o--,l+=s[n++]<>>=I,d-=I,i.back+=I}if(l>>>=A,d-=A,i.back+=A,k&64){t.msg=\"invalid distance code\",i.mode=Z;break}i.offset=m,i.extra=k&15,i.mode=Ys;case Ys:if(i.extra){for(w=i.extra;d>>=i.extra,d-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){t.msg=\"invalid distance too far back\",i.mode=Z;break}i.mode=Gs;case Gs:if(u===0)break t;if(p=g-u,i.offset>p){if(p=i.offset-p,p>i.whave&&i.sane){t.msg=\"invalid distance too far back\",i.mode=Z;break}p>i.wnext?(p-=i.wnext,C=i.wsize-p):C=i.wnext-p,p>i.length&&(p=i.length),M=i.window}else M=a,C=r-i.offset,p=i.length;p>u&&(p=u),u-=p,i.length-=p;do a[r++]=M[C++];while(--p);i.length===0&&(i.mode=Le);break;case Xs:if(u===0)break t;a[r++]=i.length,u--,i.mode=Le;break;case _i:if(i.wrap){for(;d<32;){if(o===0)break t;o--,l|=s[n++]<{if($t(t))return pt;let e=t.state;return e.window&&(e.window=null),t.state=null,qt},Al=(t,e)=>{if($t(t))return pt;let i=t.state;return(i.wrap&2)===0?pt:(i.head=e,e.done=!1,qt)},Il=(t,e)=>{let i=e.length,s,a,n;return $t(t)||(s=t.state,s.wrap!==0&&s.mode!==qe)?pt:s.mode===qe&&(a=1,a=Ie(a,e,i,0),a!==s.check)?Qa:(n=on(t,e,i,i),n?(s.mode=tn,Ja):(s.havedict=1,qt))},xl=an,jl=nn,Cl=sn,Ul=vl,Tl=rn,Vl=kl,zl=Ol,Fl=Al,Dl=Il,Rl=\"pako inflate (from Nodeca project)\",xt={inflateReset:xl,inflateReset2:jl,inflateResetKeep:Cl,inflateInit:Ul,inflateInit2:Tl,inflate:Vl,inflateEnd:zl,inflateGetHeader:Fl,inflateSetDictionary:Dl,inflateInfo:Rl};function Pl(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}var Ml=Pl,ln=Object.prototype.toString,{Z_NO_FLUSH:Bl,Z_FINISH:Nl,Z_OK:Ce,Z_STREAM_END:wi,Z_NEED_DICT:yi,Z_STREAM_ERROR:El,Z_DATA_ERROR:Qs,Z_MEM_ERROR:Ll}=le;function Fe(t){this.options=ti.assign({chunkSize:1024*64,windowBits:15,to:\"\"},t||{});let e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Wa,this.strm.avail_out=0;let i=xt.inflateInit2(this.strm,e.windowBits);if(i!==Ce)throw new Error(Wt[i]);if(this.header=new Ml,xt.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary==\"string\"?e.dictionary=je.string2buf(e.dictionary):ln.call(e.dictionary)===\"[object ArrayBuffer]\"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(i=xt.inflateSetDictionary(this.strm,e.dictionary),i!==Ce)))throw new Error(Wt[i])}Fe.prototype.push=function(t,e){let i=this.strm,s=this.options.chunkSize,a=this.options.dictionary,n,r,o;if(this.ended)return!1;for(e===~~e?r=e:r=e===!0?Nl:Bl,ln.call(t)===\"[object ArrayBuffer]\"?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;;){for(i.avail_out===0&&(i.output=new Uint8Array(s),i.next_out=0,i.avail_out=s),n=xt.inflate(i,r),n===yi&&a&&(n=xt.inflateSetDictionary(i,a),n===Ce?n=xt.inflate(i,r):n===Qs&&(n=yi));i.avail_in>0&&n===wi&&i.state.wrap>0&&t[i.next_in]!==0;)xt.inflateReset(i),n=xt.inflate(i,r);switch(n){case El:case Qs:case yi:case Ll:return this.onEnd(n),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(i.avail_out===0||n===wi))if(this.options.to===\"string\"){let u=je.utf8border(i.output,i.next_out),l=i.next_out-u,d=je.buf2string(i.output,u);i.next_out=l,i.avail_out=s-l,l&&i.output.set(i.output.subarray(u,u+l),0),this.onData(d)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(!(n===Ce&&o===0)){if(n===wi)return n=xt.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(i.avail_in===0)break}}return!0};Fe.prototype.onData=function(t){this.chunks.push(t)};Fe.prototype.onEnd=function(t){t===Ce&&(this.options.to===\"string\"?this.result=this.chunks.join(\"\"):this.result=ti.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function qi(t,e){let i=new Fe(e);if(i.push(t),i.err)throw i.msg||Wt[i.err];return i.result}function Zl(t,e){return e=e||{},e.raw=!0,qi(t,e)}var Hl=Fe,Yl=qi,Gl=Zl,Xl=qi,Wl=le,Kl={Inflate:Hl,inflate:Yl,inflateRaw:Gl,ungzip:Xl,constants:Wl},{Deflate:ad,deflate:nd,deflateRaw:ql,gzip:rd}=sl,{Inflate:od,inflate:ld,inflateRaw:$l,ungzip:dd}=Kl,Ql=ql,Jl=$l,dn=t=>Jl(t),Pi=t=>Ql(t,{level:9}),td=class{sendClientMessage(t,e){t.finish(e),this.doSendMessage(Pi(t.asUint8Array()))}pendingMessages=[];getPendingMessages(){return this.pendingMessages}markPendingMessagesAsRead(){this.pendingMessages.length=0}onMessage(t){this.pendingMessages.push(_t.getRootAsServerMessage(new Ut(dn(t))))}onDisconnection(){_e(\"disconnected\")}},ed=class{sendServerMessageTo(t,e,i){e.finish(i),this.doSendMessageTo(t,Pi(e.asUint8Array()))}sendServerMessageToAll(t,e){t.finish(e);let i=Pi(t.asUint8Array());for(let s of this.usersPendingMessages.keys())this.doSendMessageTo(s,i)}usersPendingMessages=new Map;getUsersPendingMessages(){return this.usersPendingMessages.entries()}getConnectedUsers(){return this.usersPendingMessages.keys()}disconnectedUsers=[];getDisconnectedUsers(){return this.disconnectedUsers}onMessage(t,e){this.usersPendingMessages.get(t).push(At.getRootAsClientMessage(new Ut(dn(e))))}onConnection(t){this.usersPendingMessages.set(t,[])}onDisconnection(t){this.usersPendingMessages.delete(t),this.disconnectedUsers.push(t)}};gdjs.registerFirstRuntimeSceneLoadedCallback(()=>{gdjs.BBTextRuntimeObject&&(gdjs.BBTextRuntimeObject.prototype.getString=gdjs.BBTextRuntimeObject.prototype.getBBText,gdjs.BBTextRuntimeObject.prototype.setString=gdjs.BBTextRuntimeObject.prototype.setBBText),gdjs.BitmapTextRuntimeObject&&(gdjs.BitmapTextRuntimeObject.prototype.getString=gdjs.BitmapTextRuntimeObject.prototype.getText,gdjs.BitmapTextRuntimeObject.prototype.setString=gdjs.BitmapTextRuntimeObject.prototype.setText,gdjs.BitmapTextRuntimeObject.prototype.getColor=gdjs.BitmapTextRuntimeObject.prototype.getTint,gdjs.BitmapTextRuntimeObject.prototype.setColor=gdjs.BitmapTextRuntimeObject.prototype.setTint)});return _n(id);})();\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n{", "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Triggers if the current scene is in singleplayer mode. When switching to a scene normally (without connecting to a remote scene), the game runs in this mode and doesn't run any netcode, while still emulating the THNK framework to allow the game to run as it would otherwise. This condition can be used to disable features that only make sense in multiplayer, like a chat, in the case the game is not being played in multiplayer.", "fullName": "Is singleplayer?", "functionType": "Condition", "name": "IsSinglePlayer", "sentence": "Scene running in singleplayer mode", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "// If we are neither client nor server, we are playing singleplayer.", "eventsFunctionContext.returnValue = !runtimeScene.thnkServer && !runtimeScene.thnkClient;", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "fullName": "", "functionType": "Action", "name": "___Client___", "private": true, "sentence": "", "events": [], "parameters": [], "objectGroups": [] }, { "description": "Checks if the game is currently running a server. Do not use this to delimit server code, as this ignores the server tick rate. Rather, use this in client code to display additional options reseerved to the host", "fullName": "Is a server?", "functionType": "Condition", "group": "Client only", "name": "IsServer", "sentence": "A server is running on this client", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue = !!runtimeScene.thnkServer;", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "The condition to put before the start of client code. This ensures that dedicated servers do not run client-only code.", "fullName": "Running client code", "functionType": "Condition", "group": "Client only", "name": "StartClientCode", "sentence": "Currently running on the client", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue = !THNK.settings.DEDICATED;", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Checks if a connection to a server/remote scene is currently in progress.", "fullName": "Is connecting to the server?", "functionType": "Condition", "group": "Client only", "name": "ConnectingToServer", "sentence": "Connecting to server", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue = THNK.client.getConnectionState() === \"connecting\";", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Checks if the connection to the server has failed. If the connection succeeded, the game would have switched to the remote scene.", "fullName": "Connection to server failed", "functionType": "Condition", "group": "Client only", "name": "ConnectionFailed", "private": true, "sentence": "Connection to the server has failed", "events": [ { "type": "BuiltinCommonInstructions::Comment", "color": { "b": 109, "g": 230, "r": 255, "textB": 0, "textG": 0, "textR": 0 }, "comment": "UNIMPLEMENTED" } ], "parameters": [], "objectGroups": [] }, { "description": "Gives the error code returned by the server while attempting a connection", "fullName": "Server connection error code", "functionType": "StringExpression", "group": "Client only", "name": "ServerConnectionError", "private": true, "sentence": "", "events": [ { "type": "BuiltinCommonInstructions::Comment", "color": { "b": 109, "g": 230, "r": 255, "textB": 0, "textG": 0, "textR": 0 }, "comment": "UNIMPLEMENTED" } ], "expressionType": { "type": "string" }, "parameters": [], "objectGroups": [] }, { "description": "Sends a message to the server.", "fullName": "Send a message to the server", "functionType": "Action", "group": "Client only", "name": "SendMessage", "sentence": "Send message _PARAM1_ to the server (extra data: _PARAM2_)", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkClient) {", " THNK.client.messages.sendClientMessage(", " runtimeScene.thnkClient.adapter,", " eventsFunctionContext.getArgument(\"message\"),", " eventsFunctionContext.getArgument(\"extra_data\")", " );", "} else THNK.server.events.addRawMessageToTheQueue(", " runtimeScene.thnkServer", " ? runtimeScene.thnkServer.adapter.getServerID()", " : THNK.players.getCurrentPlayerID(),", " eventsFunctionContext.getArgument(\"message\"),", " eventsFunctionContext.getArgument(\"extra_data\")", ");", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The message name", "name": "message", "type": "string" }, { "description": "(Optional) A variable with extra data for the server", "name": "extra_data", "type": "scenevar" } ], "objectGroups": [] }, { "fullName": "", "functionType": "Action", "name": "___Server___", "private": true, "sentence": "", "events": [], "parameters": [], "objectGroups": [] }, { "description": "The condition to put before the start of server code. Ensures that events meant for the server are only run when needed.", "fullName": "Running server code", "functionType": "Condition", "group": "Server only", "name": "StartServerCode", "sentence": "Server code should run", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue = runtimeScene.thnkServer ", " // The server is active, only run server code if it is time to.", " ? runtimeScene.thnkServer.runServerCode ", " // The server is innactive. Only run the server code if client mode is innactive too, as that'd mean singleplayer.", " : !runtimeScene.thnkClient;", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Ends the current server", "fullName": "Stop server", "functionType": "Condition", "group": "Server only", "name": "StopServer", "sentence": "Stop THNK server", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkServer) {", " runtimeScene.thnkServer.adapter.close();", " delete runtimeScene.thnkServer;", "}", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Give the server a target of ticks per second. A tick is when the server side code is executed. Default is 20.", "fullName": "Set target tick rate", "functionType": "Action", "group": "Server only", "name": "SetServerTickRate", "sentence": "Set server target TPS to _PARAM1_", "events": [ { "type": "BuiltinCommonInstructions::Standard", "conditions": [], "actions": [] }, { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "THNK.settings.setTickRate(eventsFunctionContext.getArgument(\"TargetTPS\"));", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The new TPS target", "name": "TargetTPS", "type": "expression" } ], "objectGroups": [] }, { "description": "Sets the currently picked player to another one, by its ID.", "fullName": "Pick a player (by ID)", "functionType": "Action", "group": "Server only", "name": "PickPlayerByID", "sentence": "Set the picked player to _PARAM1_", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue =", " THNK.players.switchPlayerContext(eventsFunctionContext.getArgument(\"PlayerID\"));", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The ID of the picked player", "name": "PlayerID", "type": "string" } ], "objectGroups": [] }, { "description": "the ID of the player that is currently picked. The picked player is set by THNK conditions to the player that initiated that event, and will be used to target with other THNK actions and conditions.", "fullName": "Currenty picked player's ID", "functionType": "ExpressionAndCondition", "group": "Server only", "name": "PickedPlayer", "sentence": "Currently picked player's ID is ", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "eventsFunctionContext.returnValue = THNK.players.getCurrentPlayerID();", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "expressionType": { "type": "string" }, "parameters": [], "objectGroups": [] }, { "description": "Links an object to the currently selected player.", "fullName": "Link object to the player", "functionType": "Action", "group": "Server/Player", "name": "LinkObjectToPlayer", "sentence": "Link _PARAM1_ to the current player", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "for (const obj of objects) THNK.players.markObjectAsOwned(obj);", "" ], "parameterObjects": "Object", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The object to link to the current player", "name": "Object", "type": "objectList" } ], "objectGroups": [] }, { "description": "Pick the instances of the object that are linked to the currently picked player.", "fullName": "Pick linked objects", "functionType": "Condition", "group": "Server/Player", "name": "UseLinkedObjects", "sentence": "Pick instances of _PARAM1_ linked to the player", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "THNK.players.pickOwnedObjects(eventsFunctionContext.getObjectsLists(\"Object\"));", "eventsFunctionContext.returnValue = true;", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The object to pick linked instances for", "name": "Object", "type": "objectList" } ], "objectGroups": [] }, { "description": "Triggered when a message from the client has been received.", "fullName": "Received message from client", "functionType": "Condition", "group": "Server only", "name": "OnMessage", "sentence": "Client sent message _PARAM1_ (extra data: _PARAM2_)", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (!runtimeScene.thnkClient) eventsFunctionContext.returnValue = THNK.server.events.popMessage(", " eventsFunctionContext.getArgument(\"message\"),", " eventsFunctionContext.getArgument(\"extra_data\")", ");", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "The name of the message", "name": "message", "type": "string" }, { "description": "(Optional) A variable with extra data from the client", "name": "extra_data", "type": "scenevar" } ], "objectGroups": [] }, { "description": "Triggers when a client has connected to the scene.", "fullName": "On client connected", "functionType": "Condition", "group": "Server only", "name": "OnClientConnect", "sentence": "A client has connected", "events": [ { "type": "BuiltinCommonInstructions::Comment", "color": { "b": 109, "g": 230, "r": 255, "textB": 0, "textG": 0, "textR": 0 }, "comment": "In singleplayer, there is only one player. Trigger their connection event one at the start and that's it." }, { "type": "BuiltinCommonInstructions::Standard", "conditions": [ { "type": { "value": "THNK::IsSinglePlayer" }, "parameters": [ "", "" ] }, { "type": { "value": "DepartScene" }, "parameters": [ "" ] } ], "actions": [ { "type": { "value": "SetReturnBoolean" }, "parameters": [ "True" ] } ] }, { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkServer) eventsFunctionContext.returnValue = THNK.server.events.popConnection(runtimeScene);", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] }, { "description": "Triggers when a client has disconnected from the scene.", "fullName": "On client disconnected", "functionType": "Condition", "group": "Server only", "name": "OnClientDisconnect", "sentence": "A client has disconnected", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkServer) eventsFunctionContext.returnValue = THNK.server.events.popDisconnection(runtimeScene);", "" ], "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [], "objectGroups": [] } ], "eventsBasedBehaviors": [ { "description": "Makes the THNK framework automatically synchronize instances of an object across clients. To be used for objects like moving terrain, player objects, etc: objects that will display the same for every user.\nNot to be used on objects unique to a single user, like an inventory menu. Prefer to send over variables the contents of the inventory and display it with non-synchronized objects.", "fullName": "Synchronize object", "name": "SynchronizedObject", "objectType": "", "eventsFunctions": [ { "fullName": "", "functionType": "Action", "name": "doStepPreEvents", "sentence": "", "events": [ { "type": "BuiltinCommonInstructions::Standard", "conditions": [ { "type": { "value": "ObjectVariableAsBoolean" }, "parameters": [ "Object", "__THNK.Initialized", "" ] } ], "actions": [ { "type": { "value": "SetObjectVariableAsBoolean" }, "parameters": [ "Object", "__THNK.Initialized", "True" ] } ], "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkServer)", " runtimeScene.thnkServer.objectsRegistery.registerObject(objects[0]);", "", "if (runtimeScene.thnkClient && typeof objects[0].thnkID !== \"number\") {", " // Object was not created by the server but the game is in client mode, delete it.", " objects[0].deleteFromScene(runtimeScene);", "", " // Workaround a GDevelop bug that creates a ghost object when deleting an object at the beginning of the scene", " if (runtimeScene.getTimeManager().isFirstFrame()) {", " runtimeScene.getAsyncTasksManager().addTask(new gdjs.ResolveTask(), () => {", " objects[0].onDeletedFromScene(runtimeScene);", " });", " }", "}", "" ], "parameterObjects": "Object", "useStrict": true, "eventsSheetExpanded": false } ] } ], "parameters": [ { "description": "Object", "name": "Object", "type": "object" }, { "description": "Behavior", "name": "Behavior", "supplementaryInformation": "THNK::SynchronizedObject", "type": "behavior" } ], "objectGroups": [] }, { "fullName": "", "functionType": "Action", "name": "onDestroy", "sentence": "", "events": [ { "type": "BuiltinCommonInstructions::JsCode", "inlineCode": [ "if (runtimeScene.thnkServer)", " runtimeScene.thnkServer.objectsRegistery.unregisterObject(objects[0]);", "" ], "parameterObjects": "Object", "useStrict": true, "eventsSheetExpanded": false } ], "parameters": [ { "description": "Object", "name": "Object", "type": "object" }, { "description": "Behavior", "name": "Behavior", "supplementaryInformation": "THNK::SynchronizedObject", "type": "behavior" } ], "objectGroups": [] } ], "propertyDescriptors": [], "sharedPropertyDescriptors": [] } ], "eventsBasedObjects": [] }