code: function write_ws_xml_protection(sp) {
  	// algorithmName, hashValue, saltValue, spinCountpassword
  	var o = ({sheet:1});
  	var deffalse = ["objects", "scenarios", "selectLockedCells", "selectUnlockedCells"];
  	var deftrue = [
  		"formatColumns", "formatRows", "formatCells",
  		"insertColumns", "insertRows", "insertHyperlinks",
  		"deleteColumns", "deleteRows",
  		"sort", "autoFilter", "pivotTables"
  	];
  	deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = "1"; });
  	deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = "0"; });
  	/* TODO: algorithm */
  	if(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();
  	return writextag('sheetProtection', null, o);
  }
docs: /* 18.3.1.85 sheetProtection CT_SheetProtection