ok give me a scratch javascript executor
```javascript //Scratch geave521 Script // Declare all necessary variables var username = ""; var password = ""; var sessionToken = ""; var projectId = ""; var newTitle = ""; var newInstructions = ""; // Log in to Scratch function login() { // Replace 'username' and 'password' with your own Scratch account credentials username = "username"; password = "password"; // Request session token $.ajax({ type: "POST", url: "https://scratch.mit.edu/session/", data: { username: username, password: password }, success: function(data) { sessionToken = data.session; console.log("Logged in as " + username); }, error: function(xhr, textStatus, errorThrown) { console.log("Login failed"); } }); } // Change the title and instructions of a project function editProject() { // Replace 'projectId' with the ID of the project you want to edit projectId = "1234567890"; // Replace 'newTitle' and 'newInstructions' with the desired new values newTitle = "New Title"; newInstructions = "New Instructions"; // Request project data $.ajax({ type: "GET", url: "https://projects.scratch.mit.edu/" + projectId, success: function(data) { // Edit project metadata data.meta.title = newTitle; data.meta.instructions = newInstructions; // Save changes $.ajax({ type: "PUT", url: "https://projects.scratch.mit.edu/" + projectId, data: JSON.stringify(data), headers: { "X-CSRFToken": sessionToken }, success: function() { console.log("Project edited"); }, error: function(xhr, textStatus, errorThrown) { console.log("Edit failed"); } }); }, error: function(xhr, textStatus, errorThrown) { console.log("Project not found"); } }); } // Call the login function to authenticate the user login(); // Call the editProject function to modify the project metadata editProject(); ```