From 909a2ac77e0fe68dc1daf1150d92d0e3cf51ba6a Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 26 Jul 2025 17:54:27 -0500 Subject: [PATCH 01/55] Created bitsandhexa.js to update later and start developing this --- .../extensions/BurningHot687/bitsandhexa.js | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 static/extensions/BurningHot687/bitsandhexa.js diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js new file mode 100644 index 000000000..cd1e8a316 --- /dev/null +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -0,0 +1,87 @@ +/** +Copyright (c) 2025 BurningHot687 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +**/ + +/* + By BurningHot687 (Raichu-Model or Raichu-Rig on Scratch). In case you can't tell I have basically no idea what I'm doing lol. What even is this license :sob: + + put some kind of documentation here so I don't have to think of it later + + oh all the blocks assume you are using decimal input unless it's shown to be hexadecimal + + TO-DO: + + - Add more of the blocks that TrueFantom had + - Get feedback + +*/ + +(function(Scratch){ + "use strict"; + class Extension { + getInfo() { + return { + id: "notrealidipromiselol", + name: "Bits and Hexa", + color1: "#15448f", + color2: "#0f1f70", + color3: "#0a094f", + // docsuri: "setupwhenyouhavetimeto.com", + blocks: [ + { + opcode: "convertBaseTypes", + text: "convert [NUM] to [BASE]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + } + ], + menus: { + BASES: { + acceptReporters: false, + items: ['decimal', 'binary', 'hexadecimal'], + }, + }, + }; + } + + convertBaseTypes(args) { + var computeValue = args.NUM; + if (!parseInt(computeValue) && !parseInt(computeValue, 16)) { + console.log("bad"); + return ""; + } + else { + console.log("good!"); + computeValue = parseInt(computeValue); + } + + switch (args.BASE) { + case 'decimal': + computeValue = computeValue.toString(10); + case 'binary': + computeValue = computeValue.toString(2); + case 'hexadecimal': + computeValue = computeValue.toString(16); + } + + return computeValue; + } + } + Scratch.extensions.register(new Extension()); +})(Scratch); From a9e33d109f7d11150b65a7c344dfafe38353c4be Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 26 Jul 2025 19:31:04 -0500 Subject: [PATCH 02/55] Added fix for hexadecimal conversion There's a broken boolean block to check for the base, which I'll need some help figuring out. Apparently it's a slightly different data type when looking at the console (it's purple :0). The main thing is that I fixed the hexadecimal conversion with a new function and a small concatenation. --- .../extensions/BurningHot687/bitsandhexa.js | 233 +++++++++++------- 1 file changed, 146 insertions(+), 87 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index cd1e8a316..2f7f431b5 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -1,87 +1,146 @@ -/** -Copyright (c) 2025 BurningHot687 - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -**/ - -/* - By BurningHot687 (Raichu-Model or Raichu-Rig on Scratch). In case you can't tell I have basically no idea what I'm doing lol. What even is this license :sob: - - put some kind of documentation here so I don't have to think of it later - - oh all the blocks assume you are using decimal input unless it's shown to be hexadecimal - - TO-DO: - - - Add more of the blocks that TrueFantom had - - Get feedback - -*/ - -(function(Scratch){ - "use strict"; - class Extension { - getInfo() { - return { - id: "notrealidipromiselol", - name: "Bits and Hexa", - color1: "#15448f", - color2: "#0f1f70", - color3: "#0a094f", - // docsuri: "setupwhenyouhavetimeto.com", - blocks: [ - { - opcode: "convertBaseTypes", - text: "convert [NUM] to [BASE]", - blockType: Scratch.BlockType.REPORTER, - disableMonitor: true, - // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? - arguments: { - NUM: { - type: Scratch.ArgumentType.STRING, - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - } - ], - menus: { - BASES: { - acceptReporters: false, - items: ['decimal', 'binary', 'hexadecimal'], - }, - }, - }; - } - - convertBaseTypes(args) { - var computeValue = args.NUM; - if (!parseInt(computeValue) && !parseInt(computeValue, 16)) { - console.log("bad"); - return ""; - } - else { - console.log("good!"); - computeValue = parseInt(computeValue); - } - - switch (args.BASE) { - case 'decimal': - computeValue = computeValue.toString(10); - case 'binary': - computeValue = computeValue.toString(2); - case 'hexadecimal': - computeValue = computeValue.toString(16); - } - - return computeValue; - } - } - Scratch.extensions.register(new Extension()); -})(Scratch); +/** +Copyright (c) 2025 BurningHot687 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +**/ + +/* + By BurningHot687 (Raichu-Model or Raichu-Rig on Scratch). In case you can't tell I have basically no idea what I'm doing lol. What even is this license :sob: + + put some kind of documentation here so I don't have to think of it later + + oh all the blocks assume you are using decimal input unless it's shown to be hexadecimal + + TO-DO: + + - Add more of the blocks that TrueFantom had + - Get feedback + +*/ + +function isInCorrectFormat(inputString) { + if ((inputString != parseInt(inputString, 10).toString(10)) && (inputString != parseInt(inputString, 16).toString(16))) { + console.log(inputString); + console.log(parseInt(inputString).toString(10)); + console.log(parseInt(inputString, 16).toString(16)); + return false; + } + console.log("good"); + return true; +}; + +(function(Scratch){ + "use strict"; + + if (!Scratch.extensions.unsandboxed) { + // throw new Error("This extension prefers to be used unsandboxed"); + } + + class Extension { + getInfo() { + return { + id: "notrealidipromiselol", + name: Scratch.translate("Bits and Hexa"), + color1: "#15448f", + color2: "#0f1f70", + color3: "#0a094f", + // docsURI: "setupwhenyouhavetimeto.com", + // menuIconURI: "you get it", + // blockIconURI: "oo I can do this too", + + blocks: [ + { + opcode: "isNumActuallyBase", + text: "is [NUM] [BASE]?", + blockType: Scratch.BlockType.BOOLEAN, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "convertBaseTypes", + text: "convert [NUM] to [BASE]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "bitHexManipulationLabel", + text: "Bitwise Manipulation", + blockType: Scratch.BlockType.LABEL, + }, + ], + menus: { + BASES: { + acceptReporters: false, + items: ['decimal', 'binary', 'hexadecimal'], + }, + }, + }; + } + + isNumActuallyBase(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(args.NUM) === false) { + console.log("bad"); + return false; + } + + switch (args.BASE) { + case 'decimal': + console.log(parseInt(computeValue, 10).toString(10)); + console.log(computeValue); + console.log(parseInt(computeValue, 10).toString(10) === computeValue); + return (parseInt(computeValue, 10).toString(10) === computeValue); + case 'binary': + return (parseInt(computeValue, 2).toString(2) === computeValue); + case 'hexadecimal': + return (parseInt(computeValue, 16).toString(16) === computeValue); + } + + } + + convertBaseTypes(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (computeValue === parseInt(computeValue, 16).toString(16)) { + computeValue = "0x" + computeValue; + } + computeValue = parseInt(computeValue); + + switch (args.BASE) { + case 'decimal': + computeValue = computeValue.toString(10); + case 'binary': + computeValue = computeValue.toString(2); + case 'hexadecimal': + computeValue = computeValue.toString(16); + } + + return computeValue; + } + } + Scratch.extensions.register(new Extension()); +})(Scratch); \ No newline at end of file From 0add430ea9003822a645e1762cb498f32e309605 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 27 Jul 2025 19:22:32 -0500 Subject: [PATCH 03/55] Fixed bugs with hexa and added shifters You may now do simple left and right shifting of *assumed decimal* inputs, and bugs with detecting the different bases have been fixed hopefully! --- .../extensions/BurningHot687/bitsandhexa.js | 93 ++++++++++++++++--- 1 file changed, 81 insertions(+), 12 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 2f7f431b5..aee00e028 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -23,16 +23,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ function isInCorrectFormat(inputString) { - if ((inputString != parseInt(inputString, 10).toString(10)) && (inputString != parseInt(inputString, 16).toString(16))) { - console.log(inputString); - console.log(parseInt(inputString).toString(10)); - console.log(parseInt(inputString, 16).toString(16)); + if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { return false; } console.log("good"); return true; }; +function isItHexadecimal(inputString) { + return !/[^abcdef0123456789]/i.test(inputString); +}; + (function(Scratch){ "use strict"; @@ -61,6 +62,7 @@ function isInCorrectFormat(inputString) { arguments: { NUM: { type: Scratch.ArgumentType.STRING, + defaultValue: "1011", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -77,6 +79,7 @@ function isInCorrectFormat(inputString) { arguments: { NUM: { type: Scratch.ArgumentType.STRING, + defaultValue: "4b2", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -89,6 +92,38 @@ function isInCorrectFormat(inputString) { text: "Bitwise Manipulation", blockType: Scratch.BlockType.LABEL, }, + { + opcode: "rightShiftBitz", + text: "[NUM] >> [AMOUNT]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "4b2", + }, + AMOUNT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 3, + } + }, + }, + { + opcode: "leftShiftBitz", + text: "[NUM] << [AMOUNT]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "31", + }, + AMOUNT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 2, + } + }, + }, ], menus: { BASES: { @@ -101,21 +136,18 @@ function isInCorrectFormat(inputString) { isNumActuallyBase(args) { var computeValue = args.NUM; - if (isInCorrectFormat(args.NUM) === false) { + if (isInCorrectFormat(computeValue) === false) { console.log("bad"); return false; } switch (args.BASE) { case 'decimal': - console.log(parseInt(computeValue, 10).toString(10)); - console.log(computeValue); - console.log(parseInt(computeValue, 10).toString(10) === computeValue); - return (parseInt(computeValue, 10).toString(10) === computeValue); + return !/[^0123456789]/.test(computeValue); case 'binary': - return (parseInt(computeValue, 2).toString(2) === computeValue); + return !/[^01]/.test(computeValue); case 'hexadecimal': - return (parseInt(computeValue, 16).toString(16) === computeValue); + return isItHexadecimal(computeValue); } } @@ -125,7 +157,7 @@ function isInCorrectFormat(inputString) { if (isInCorrectFormat(computeValue) === false) { return ""; } - if (computeValue === parseInt(computeValue, 16).toString(16)) { + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } computeValue = parseInt(computeValue); @@ -141,6 +173,43 @@ function isInCorrectFormat(inputString) { return computeValue; } + + rightShiftBitz(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (!parseInt(args.AMOUNT)) { + return computeValue; + } + if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { + return ""; + } + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + + return computeValue >> args.AMOUNT; + } + + leftShiftBitz(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (!parseInt(args.AMOUNT)) { + return computeValue; + } + if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { + return ""; + } + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + + return computeValue << args.AMOUNT; + } + } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From 456455385d3bb319ee461beaeeb52426c00a8519 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 27 Jul 2025 20:12:19 -0500 Subject: [PATCH 04/55] Finished all currently planned block additions All of the blocks I wanted to add have now been added. Please suggest any more that you think might be useful and relevant to this extension. I must note the new bug introduced where I am seemingly unable to detect hexadecimal again in the operator blocks. --- .../extensions/BurningHot687/bitsandhexa.js | 266 +++++++++++++++++- 1 file changed, 264 insertions(+), 2 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index aee00e028..d9f2ca38c 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -93,7 +93,7 @@ function isItHexadecimal(inputString) { blockType: Scratch.BlockType.LABEL, }, { - opcode: "rightShiftBitz", + opcode: "signedRightShiftBitz", text: "[NUM] >> [AMOUNT]", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, @@ -124,6 +124,122 @@ function isItHexadecimal(inputString) { } }, }, + { + opcode: "unsignedRightShiftBitz", + text: "[NUM] >>> [AMOUNT]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "fe5", + }, + AMOUNT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 5, + } + }, + }, + { + opcode: "bitHexBitwiseOpratorsLabel", + text: "Bitwise Operators", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "bitwiseAndOperator", + text: "[NUM] & [NUM2] | and", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, + { + opcode: "bitwiseOrOperator", + text: "[NUM] | [NUM2] | or", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, + { + opcode: "bitwiseXorOperator", + text: "[NUM] ^ [NUM2] | xor", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, + { + opcode: "bitwiseNotOperator", + text: "~[NUM] | not", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + }, + }, + { + opcode: "bitwiseNandOperator", + text: "~[NUM] & [NUM2] | nand", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, + { + opcode: "bitwiseNorOperator", + text: "~[NUM] | [NUM2] | nor", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, + { + opcode: "bitwiseXnorOperator", + text: "~[NUM] ^ [NUM2] | xnor", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + }, + NUM2: { + type: Scratch.ArgumentType.STRING, + } + }, + }, ], menus: { BASES: { @@ -174,7 +290,7 @@ function isItHexadecimal(inputString) { return computeValue; } - rightShiftBitz(args) { + signedRightShiftBitz(args) { var computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { return ""; @@ -210,6 +326,152 @@ function isItHexadecimal(inputString) { return computeValue << args.AMOUNT; } + signedRightShiftBitz(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (!parseInt(args.AMOUNT)) { + return computeValue; + } + if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { + return ""; + } + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + + return computeValue >>> args.AMOUNT; + } + + bitwiseAndOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return value1 & value2; + } + + bitwiseOrOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return value1 | value2; + } + + bitwiseXorOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return value1 ^ value2; + } + + bitwiseNotOperator(args) { + var value1 = args.NUM; + if (!isInCorrectFormat(value1)) { + return ""; + } + if (isNaN(parseInt(value1))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + + return ~value1; + } + + bitwiseNandOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return !(value1 & value2); + } + + bitwiseNorOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return !(value1 | value2); + } + + bitwiseXnorOperator(args) { + var value1 = args.NUM; + var value2 = args.NUM2; + if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { + return ""; + } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; + } + if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { + value2 = "0x" + value2; + } + + return !(value1 ^ value2); + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From 85a48cf3595ae31ca0c785154b5f02abd32937c0 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 28 Jul 2025 14:20:31 -0500 Subject: [PATCH 05/55] Everything Broke With Negatives (but new blocks!) I've added in two blocks I almost forgot about, but then I stumbled upon the fact that my code is terrible **and** apparently negatives aren't supported yet **and** somehow the BASES menu is not being used properly? I'm pretty confused as to what is happening so I would appreciate any help. --- .../extensions/BurningHot687/bitsandhexa.js | 86 ++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index d9f2ca38c..0d1f65dda 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -140,6 +140,38 @@ function isItHexadecimal(inputString) { } }, }, + { + opcode: "circularRightShiftBitz", + text: "[NUM] ↻ [AMOUNT]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "fe5", + }, + AMOUNT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 5, + } + }, + }, + { + opcode: "circularLeftShiftBitz", + text: "[NUM] ↺ [AMOUNT]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "fe5", + }, + AMOUNT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 5, + } + }, + }, { opcode: "bitHexBitwiseOpratorsLabel", text: "Bitwise Operators", @@ -259,7 +291,7 @@ function isItHexadecimal(inputString) { switch (args.BASE) { case 'decimal': - return !/[^0123456789]/.test(computeValue); + return !/[^0123456789-]/.test(computeValue); case 'binary': return !/[^01]/.test(computeValue); case 'hexadecimal': @@ -275,6 +307,7 @@ function isItHexadecimal(inputString) { } if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; + console.log("hexa"); } computeValue = parseInt(computeValue); @@ -282,8 +315,19 @@ function isItHexadecimal(inputString) { case 'decimal': computeValue = computeValue.toString(10); case 'binary': + if (computeValue < 0) { + console.log("huh cool"); + computeValue *= -1; + computeValue = ~computeValue; + computeValue++; + } computeValue = computeValue.toString(2); case 'hexadecimal': + if (computeValue < 0) { + computeValue *= -1; + computeValue = ~computeValue; + computeValue++; + } computeValue = computeValue.toString(16); } @@ -326,7 +370,7 @@ function isItHexadecimal(inputString) { return computeValue << args.AMOUNT; } - signedRightShiftBitz(args) { + unsignedRightShiftBitz(args) { var computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { return ""; @@ -344,6 +388,42 @@ function isItHexadecimal(inputString) { return computeValue >>> args.AMOUNT; } + circularRightShiftBitz(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (!parseInt(args.AMOUNT)) { + return computeValue; + } + if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { + return ""; + } + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + + return computeValue >> args.AMOUNT | computeValue << (32 - args.AMOUNT); + } + + circularLeftShiftBitz(args) { + var computeValue = args.NUM; + if (isInCorrectFormat(computeValue) === false) { + return ""; + } + if (!parseInt(args.AMOUNT)) { + return computeValue; + } + if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { + return ""; + } + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + + return computeValue << args.AMOUNT | computeValue >> (32 - args.AMOUNT); + } + bitwiseAndOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; @@ -354,7 +434,9 @@ function isItHexadecimal(inputString) { return ""; } if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + console.log(value1); value1 = "0x" + value1; + console.log(value1); } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; From f0adfec5cec14e367dc228ac028aaaad3d603278 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 28 Jul 2025 16:01:36 -0500 Subject: [PATCH 06/55] Added the extension here Remember to finish documentation and image setup after debugging, future me! --- src/lib/extensions.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/lib/extensions.js b/src/lib/extensions.js index 51c2f2aa6..babb8b31b 100644 --- a/src/lib/extensions.js +++ b/src/lib/extensions.js @@ -453,6 +453,17 @@ export default [ creatorAlias: "gaimerI17", note: "Extension thumbnail made by Dillon." }, + { + name: "Bits & Hexa", + description: "An extension to deal with bitwise operations that supports hexadecimal.", + code: "BurningHot687/bitsandhexa.js", + banner: "BurningHot687/ADDMEbitsandhexa.png", + creator: "Raichu-Model", + documentation: "ADDMEpage-name", + creatorAlias: "BurningHot687", + notes: "An expansion of a turbowarp extension", + isGitHub: false, + }, /* these extensions are completely dead as of now { name: "Online Captcha", From 03d36e210481280cea0b9fb7ad4dfde4c575358a Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 28 Jul 2025 16:18:35 -0500 Subject: [PATCH 07/55] Created documentation that isn't complete --- src/lib/Documentation/bitsandhexa.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/lib/Documentation/bitsandhexa.md diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md new file mode 100644 index 000000000..f02584770 --- /dev/null +++ b/src/lib/Documentation/bitsandhexa.md @@ -0,0 +1,9 @@ +# Bits & Hexa +## Bitwise Operations for Decimals, Binary, and Hexadecimal +### By BurningHot687/Raichu-Model + +If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation) + +```scratch +to-do: (work) on (documentation v) +``` From 3cee7ebea79d5442ff669d8b0dc87e7f2404014f Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 28 Jul 2025 16:19:13 -0500 Subject: [PATCH 08/55] Added documentation to extension list --- src/lib/extensions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/extensions.js b/src/lib/extensions.js index babb8b31b..2dbbe559e 100644 --- a/src/lib/extensions.js +++ b/src/lib/extensions.js @@ -459,7 +459,7 @@ export default [ code: "BurningHot687/bitsandhexa.js", banner: "BurningHot687/ADDMEbitsandhexa.png", creator: "Raichu-Model", - documentation: "ADDMEpage-name", + documentation: "bitsandhexa", creatorAlias: "BurningHot687", notes: "An expansion of a turbowarp extension", isGitHub: false, From 93c12c1a7462cfd0cc2d6e0445af9f762aa0636d Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 2 Aug 2025 13:11:11 -0500 Subject: [PATCH 09/55] Added extension to documentation here as well --- src/lib/Documentation/pages.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/Documentation/pages.js b/src/lib/Documentation/pages.js index eea3fcac9..c5f46392f 100644 --- a/src/lib/Documentation/pages.js +++ b/src/lib/Documentation/pages.js @@ -33,6 +33,8 @@ import PaintUtils from "./PaintUtils.md?raw"; // Resolution import Resolution from "./Resolution.md?raw"; +import PageBitsAndHexaDocs from "./bitsandhexa.md?raw"; + export default { // the key is the path to the docs page // so you can do "sharkpool-particle-tools" for example @@ -65,4 +67,7 @@ export default { // Resolution "Resolution": Resolution, + + // Bitwise with Hexadecimal + "bitsandhexa": PageBitsAndHexaDocs, }; From b26732c7592140f19bdbd1e53ef84ec110b674a9 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 2 Aug 2025 13:15:16 -0500 Subject: [PATCH 10/55] Fixed positive number bugs for conversion Slowly but surely this'll work. --- .../extensions/BurningHot687/bitsandhexa.js | 71 ++++++++++++++++--- 1 file changed, 62 insertions(+), 9 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 0d1f65dda..b07e097c1 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -44,12 +44,11 @@ function isItHexadecimal(inputString) { class Extension { getInfo() { return { - id: "notrealidipromiselol", + id: "burninghot687bitwisewhexa", name: Scratch.translate("Bits and Hexa"), color1: "#15448f", color2: "#0f1f70", color3: "#0a094f", - // docsURI: "setupwhenyouhavetimeto.com", // menuIconURI: "you get it", // blockIconURI: "oo I can do this too", @@ -71,15 +70,15 @@ function isItHexadecimal(inputString) { }, }, { - opcode: "convertBaseTypes", - text: "convert [NUM] to [BASE]", + opcode: "convertBaseTypesBitW", + text: "convert [NUM] from dec/hexa to [BASE]", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? arguments: { NUM: { type: Scratch.ArgumentType.STRING, - defaultValue: "4b2", + defaultValue: "4d2", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -87,6 +86,23 @@ function isItHexadecimal(inputString) { }, }, }, + { + opcode: "convertBinaryToOtherTypes", + text: "convert [NUM] from binary to [BASE]", + /// hideFromPalette: true, + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "10011010010", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + } + } + }, { opcode: "bitHexManipulationLabel", text: "Bitwise Manipulation", @@ -283,6 +299,7 @@ function isItHexadecimal(inputString) { } isNumActuallyBase(args) { + console.log(args.BASE); var computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { console.log("bad"); @@ -300,7 +317,7 @@ function isItHexadecimal(inputString) { } - convertBaseTypes(args) { + convertBaseTypesBitW(args) { var computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { return ""; @@ -314,21 +331,57 @@ function isItHexadecimal(inputString) { switch (args.BASE) { case 'decimal': computeValue = computeValue.toString(10); + break; case 'binary': if (computeValue < 0) { console.log("huh cool"); - computeValue *= -1; + computeValue = Math.abs(computeValue); computeValue = ~computeValue; computeValue++; } - computeValue = computeValue.toString(2); + computeValue = (parseInt(args.NUM) < 0) ? "1" : "0" + computeValue.toString(2); + break; case 'hexadecimal': if (computeValue < 0) { - computeValue *= -1; + computeValue = Math.abs(computeValue); computeValue = ~computeValue; computeValue++; } computeValue = computeValue.toString(16); + break; + default: + console.log("failed?"); + return ""; + } + + return computeValue; + } + + convertBinaryToOtherTypes(args) { + if (/[^01]/.test(args.NUM)) { + return ""; + } + var computeValue; + + switch (args.BASE) { + case 'decimal': + for (var i = 0; i < args.NUM.length; i++) { + computeValue = computeValue + (parseInt(args.NUM[i])*2^(args.NUM.length - i - 1)).toString(); + } + break; + case 'binary': + return args.NUM; + case 'hexadecimal': + if (computeValue < 0) { + computeValue *= -1; + computeValue = ~computeValue; + computeValue--; + } + computeValue = computeValue.toString(16); + break; + default: + console.log("failed?"); + return ""; } return computeValue; From 297deeafa608dc72ffd72db121a6109f8bd33ea9 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 2 Aug 2025 14:22:51 -0500 Subject: [PATCH 11/55] Adding Banner Soon --- static/images/BurningHot687/placeholder-thing.png | 1 + 1 file changed, 1 insertion(+) create mode 100644 static/images/BurningHot687/placeholder-thing.png diff --git a/static/images/BurningHot687/placeholder-thing.png b/static/images/BurningHot687/placeholder-thing.png new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/static/images/BurningHot687/placeholder-thing.png @@ -0,0 +1 @@ + From 1527c777bfdffa2eaddf6e3e8d759969a49f1b9a Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sat, 2 Aug 2025 14:23:16 -0500 Subject: [PATCH 12/55] Added banner --- static/images/BurningHot687/bitsandhexa.png | Bin 0 -> 153220 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/BurningHot687/bitsandhexa.png diff --git a/static/images/BurningHot687/bitsandhexa.png b/static/images/BurningHot687/bitsandhexa.png new file mode 100644 index 0000000000000000000000000000000000000000..626b02281d3bd813afb16a4f6e8fb04bc58646e0 GIT binary patch literal 153220 zcmV(;K-<5GP)M000U}X+uL$b5ch_ zAW20-HZeIiHZ3wPF#rHaiJen-Sd;e_KHv9c4^~3h@UfR{fdC>StO&>uS)ve<0AYj> z5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH15C~g000{K(ZT*WKal6< z?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj z005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5!4#~(4xGUqyucR%VFpA% z3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9;1XPc>u?taU>Kgl7`%oF z1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZqynizYLQ(?Bl0bB6giDt zK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>XmZEFX8nhlgfVQHi(M#xc zbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1#CT#lv5;6stS0Uu9wDA3 zUMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z! zkWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>Lsh-pbs)#zDT1jo7c2F-< zhp7`Zb($s3n-)XMq%EV>(3)vyY4>O^>2$gY-Gd%Qm(Z8eYv>2*=jns=cMJ`N4THx> zVkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^d=-((5|uiYR+WC0=c-gy zb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG z2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7S8PxlSDOr*I-AS3sI8l= z#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{%p4LO);n}Nd~$Sk%yw*W zyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X;pL)xc% z+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_kmoO6c3xRt`@J4dvz#WL z)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~e%5}Oeh2)X`#bu}{g3#+ z;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg6+#RN4Ot&@lW)Km@*DYM zGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnWh~P(Th`1kV8JQRPeH1Aw zGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmhY-8-3xPZ8-xPf?w_(k!T z5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C%bs^USv6UZd^m-e5|^?+ z<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3hINdvaL;7fjPeygdGYL;p zD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eTPi8AClMUo~=55LwlZVRp z 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
B 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 Date: Sat, 2 Aug 2025 14:26:38 -0500 Subject: [PATCH 13/55] Delete static/images/BurningHot687/placeholder-thing.png --- static/images/BurningHot687/placeholder-thing.png | 1 - 1 file changed, 1 deletion(-) delete mode 100644 static/images/BurningHot687/placeholder-thing.png diff --git a/static/images/BurningHot687/placeholder-thing.png b/static/images/BurningHot687/placeholder-thing.png deleted file mode 100644 index 8b1378917..000000000 --- a/static/images/BurningHot687/placeholder-thing.png +++ /dev/null @@ -1 +0,0 @@ - From 7ceee08845885803315ec3f9121759b2562fd7ec Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 3 Aug 2025 17:35:20 -0500 Subject: [PATCH 14/55] Added more ways to handle bits (not implemented) Oh yeah and a logo + block switching implemented for most blocks (bitwise operations still need it) I also fixed negative numbers, and this new update should mean the old system could be brought back for some different handling if necessary. --- .../extensions/BurningHot687/bitsandhexa.js | 98 ++++++++++++++++--- 1 file changed, 82 insertions(+), 16 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index b07e097c1..a4520fd3d 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -11,9 +11,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI /* By BurningHot687 (Raichu-Model or Raichu-Rig on Scratch). In case you can't tell I have basically no idea what I'm doing lol. What even is this license :sob: - put some kind of documentation here so I don't have to think of it later - - oh all the blocks assume you are using decimal input unless it's shown to be hexadecimal + oh all the other blocks assume you are using decimal input unless it's shown to be hexadecimal TO-DO: @@ -22,6 +20,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ +let fullLength = true; +const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; +const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; + function isInCorrectFormat(inputString) { if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { return false; @@ -49,8 +51,8 @@ function isItHexadecimal(inputString) { color1: "#15448f", color2: "#0f1f70", color3: "#0a094f", - // menuIconURI: "you get it", - // blockIconURI: "oo I can do this too", + menuIconURI: iconCircle, + blockIconURI: icon, blocks: [ { @@ -85,6 +87,7 @@ function isItHexadecimal(inputString) { menu: "BASES", }, }, + switches: [ "convertBinaryToOtherTypes" ], }, { opcode: "convertBinaryToOtherTypes", @@ -101,7 +104,8 @@ function isItHexadecimal(inputString) { type: Scratch.ArgumentType.STRING, menu: "BASES", } - } + }, + switches: [ "convertBaseTypesBitW" ], }, { opcode: "bitHexManipulationLabel", @@ -123,6 +127,7 @@ function isItHexadecimal(inputString) { defaultValue: 3, } }, + switches: [ "leftShiftBitz", "unsignedRightShiftBitz", "circularRightShiftBitz", "circularLeftShiftBitz" ], }, { opcode: "leftShiftBitz", @@ -139,6 +144,7 @@ function isItHexadecimal(inputString) { defaultValue: 2, } }, + switches: [ "signedRightShiftBitz", "unsignedRightShiftBitz", "circularRightShiftBitz", "circularLeftShiftBitz" ], }, { opcode: "unsignedRightShiftBitz", @@ -155,6 +161,7 @@ function isItHexadecimal(inputString) { defaultValue: 5, } }, + switches: [ "signedRightShiftBitz", "leftShiftBitz", "circularRightShiftBitz", "circularLeftShiftBitz" ], }, { opcode: "circularRightShiftBitz", @@ -171,6 +178,7 @@ function isItHexadecimal(inputString) { defaultValue: 5, } }, + switches: [ "signedRightShiftBitz", "leftShiftBitz", "unsignedRightShiftBitz", "circularLeftShiftBitz" ], }, { opcode: "circularLeftShiftBitz", @@ -187,9 +195,10 @@ function isItHexadecimal(inputString) { defaultValue: 5, } }, + switches: [ "signedRightShiftBitz", "leftShiftBitz", "unsignedRightShiftBitz", "circularRightShiftBitz" ], }, { - opcode: "bitHexBitwiseOpratorsLabel", + opcode: "bitHexBitwiseOperatorsLabel", text: "Bitwise Operators", blockType: Scratch.BlockType.LABEL, }, @@ -288,16 +297,73 @@ function isItHexadecimal(inputString) { } }, }, + { + opcode: "bitHexConfigurationLabel", + text: "Configuration Settings ⚠", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "binaryLengthSetter", + text: "use a [LENGTH] length for binary", + blockType: Scratch.BlockType.COMMAND, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + } + }, + }, + { + opcode: "binaryLengthGetter", + text: "using [LENGTH] length?", + blockType: Scratch.BlockType.BOOLEAN, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + }, + }, + }, ], menus: { BASES: { acceptReporters: false, items: ['decimal', 'binary', 'hexadecimal'], }, + LENGTHS: { + acceptReporters: false, + items: ['fixed', 'dynamic'], + }, }, }; } + binaryLengthGetter(args) { + switch (args.LENGTH) { + case 'fixed': + return fullLength; + case 'dynamic': + return !fullLength; + default: + console.log("error here?"); + break; + } + } + + binaryLengthSetter(args) { + switch (args.LENGTH) { + case 'fixed': + fullLength = true; + break; + case 'dynamic': + fullLength = false; + break; + default: + console.log("error here?"); + break; + } + } + isNumActuallyBase(args) { console.log(args.BASE); var computeValue = args.NUM; @@ -333,21 +399,21 @@ function isItHexadecimal(inputString) { computeValue = computeValue.toString(10); break; case 'binary': - if (computeValue < 0) { + /*if (computeValue < 0) { console.log("huh cool"); computeValue = Math.abs(computeValue); computeValue = ~computeValue; computeValue++; - } - computeValue = (parseInt(args.NUM) < 0) ? "1" : "0" + computeValue.toString(2); + }*/ + computeValue = (computeValue >>> 0).toString(2); break; case 'hexadecimal': - if (computeValue < 0) { + /*if (computeValue < 0) { computeValue = Math.abs(computeValue); computeValue = ~computeValue; computeValue++; - } - computeValue = computeValue.toString(16); + }*/ + computeValue = (computeValue >>> 0).toString(16); break; default: console.log("failed?"); @@ -361,12 +427,12 @@ function isItHexadecimal(inputString) { if (/[^01]/.test(args.NUM)) { return ""; } - var computeValue; + var computeValue = 0; switch (args.BASE) { case 'decimal': - for (var i = 0; i < args.NUM.length; i++) { - computeValue = computeValue + (parseInt(args.NUM[i])*2^(args.NUM.length - i - 1)).toString(); + for (var i = args.NUM.length; i > 0; i--) { + computeValue = computeValue + (parseInt(args.NUM[i])*2^(args.NUM.length - i)).toString(); } break; case 'binary': From 16fb7a5ec855df53b04f266ae9864937ec27de59 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 3 Aug 2025 18:03:51 -0500 Subject: [PATCH 15/55] New doc update + ideas I don't need a separate binary block, or maybe it'd be easier if I had three separate blocks? Or maybe 0x automatically turns the input into hexadecimal, so I need to redo alot of those --- src/lib/Documentation/bitsandhexa.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index f02584770..00d2e0afc 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -1,9 +1,19 @@ -# Bits & Hexa +# Bits & Hexa v0.9 ## Bitwise Operations for Decimals, Binary, and Hexadecimal ### By BurningHot687/Raichu-Model If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation) +-# Keep in mind that version 0.9 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64. + +```scratch + +``` + +Checks if the provided string is one of the alloted bases + ```scratch -to-do: (work) on (documentation v) +convert [4d2] from dec/hexa to [decimal v] :: reporter :: #15448f ``` + +Assumes that the input is a decimal unless a letter is put in to make it hexadecimal (improve later!), then converts it to one of the alloted bases. From 9ff04296551304d1ab1d0481d53676e45238c517 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 3 Aug 2025 18:06:01 -0500 Subject: [PATCH 16/55] whoops --- src/lib/Documentation/bitsandhexa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 00d2e0afc..8ae793d48 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -4,7 +4,7 @@ If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation) --# Keep in mind that version 0.9 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64. +###### Keep in mind that version 0.9 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64. ```scratch From 1dfb62fc2c53cea2f346ef86912b420f895c8ebe Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 4 Aug 2025 19:00:46 -0500 Subject: [PATCH 17/55] Add files via upload --- .../extensions/BurningHot687/bitsandhexa.js | 240 +++++++----------- 1 file changed, 86 insertions(+), 154 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index a4520fd3d..a11f75a62 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -20,15 +20,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -let fullLength = true; +// V0.10.0.0 + +var fullLength = true; +var basesArray = ["decimal", "binary", "hexadecimal"]; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; function isInCorrectFormat(inputString) { if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { + console.log("bad string") return false; } - console.log("good"); + console.log("good string"); return true; }; @@ -36,6 +40,25 @@ function isItHexadecimal(inputString) { return !/[^abcdef0123456789]/i.test(inputString); }; +function isItDecimal(inputString) { + return !/[^0123456789-]/.test(inputString); +}; + +function isItBinary(inputString) { + return !/[^01]/.test(inputString); +}; + +function testForFormat(numString, base) { + switch (basesArray.indexOf(base)) { + case 0: + return isItDecimal(numString); + case 1: + return isItBinary(numString); + case 2: + return isItHexadecimal(numString); + } +}; + (function(Scratch){ "use strict"; @@ -73,7 +96,7 @@ function isItHexadecimal(inputString) { }, { opcode: "convertBaseTypesBitW", - text: "convert [NUM] from dec/hexa to [BASE]", + text: "convert [NUM] from [FROM] to [BASE]", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? @@ -82,30 +105,15 @@ function isItHexadecimal(inputString) { type: Scratch.ArgumentType.STRING, defaultValue: "4d2", }, - BASE: { + FROM: { type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - switches: [ "convertBinaryToOtherTypes" ], - }, - { - opcode: "convertBinaryToOtherTypes", - text: "convert [NUM] from binary to [BASE]", - /// hideFromPalette: true, - blockType: Scratch.BlockType.REPORTER, - disableMonitor: true, - arguments: { - NUM: { - type: Scratch.ArgumentType.STRING, - defaultValue: "10011010010", + menu: "BASES2", }, BASE: { type: Scratch.ArgumentType.STRING, menu: "BASES", - } + }, }, - switches: [ "convertBaseTypesBitW" ], }, { opcode: "bitHexManipulationLabel", @@ -328,12 +336,16 @@ function isItHexadecimal(inputString) { menus: { BASES: { acceptReporters: false, - items: ['decimal', 'binary', 'hexadecimal'], + items: basesArray.slice(), }, LENGTHS: { acceptReporters: false, items: ['fixed', 'dynamic'], }, + BASES2: { + acceptReporters: false, + items: basesArray.slice(), + }, }, }; } @@ -365,40 +377,36 @@ function isItHexadecimal(inputString) { } isNumActuallyBase(args) { - console.log(args.BASE); var computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { - console.log("bad"); return false; } - switch (args.BASE) { - case 'decimal': - return !/[^0123456789-]/.test(computeValue); - case 'binary': - return !/[^01]/.test(computeValue); - case 'hexadecimal': - return isItHexadecimal(computeValue); - } - + return testForFormat(computeValue, args.BASE); } convertBaseTypesBitW(args) { var computeValue = args.NUM; + console.log(args.FROM); + console.log(args.BASE); if (isInCorrectFormat(computeValue) === false) { return ""; } - if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { - computeValue = "0x" + computeValue; - console.log("hexa"); + if (!testForFormat(computeValue, args.FROM)) { + console.log("not same as [from]"); + return ""; } - computeValue = parseInt(computeValue); + if (args.FROM === args.BASE) { + console.log("same!"); + // return args.NUM; + } + computeValue = parseInt(computeValue, (args.FROM === basesArray[0]) ? 10 : ((args.FROM === basesArray[1]) ? 2: 16)); - switch (args.BASE) { - case 'decimal': + switch (basesArray.indexOf(args.BASE)) { + case 0: computeValue = computeValue.toString(10); break; - case 'binary': + case 1: /*if (computeValue < 0) { console.log("huh cool"); computeValue = Math.abs(computeValue); @@ -407,7 +415,7 @@ function isItHexadecimal(inputString) { }*/ computeValue = (computeValue >>> 0).toString(2); break; - case 'hexadecimal': + case 2: /*if (computeValue < 0) { computeValue = Math.abs(computeValue); computeValue = ~computeValue; @@ -423,47 +431,9 @@ function isItHexadecimal(inputString) { return computeValue; } - convertBinaryToOtherTypes(args) { - if (/[^01]/.test(args.NUM)) { - return ""; - } - var computeValue = 0; - - switch (args.BASE) { - case 'decimal': - for (var i = args.NUM.length; i > 0; i--) { - computeValue = computeValue + (parseInt(args.NUM[i])*2^(args.NUM.length - i)).toString(); - } - break; - case 'binary': - return args.NUM; - case 'hexadecimal': - if (computeValue < 0) { - computeValue *= -1; - computeValue = ~computeValue; - computeValue--; - } - computeValue = computeValue.toString(16); - break; - default: - console.log("failed?"); - return ""; - } - - return computeValue; - } - signedRightShiftBitz(args) { var computeValue = args.NUM; - if (isInCorrectFormat(computeValue) === false) { - return ""; - } - if (!parseInt(args.AMOUNT)) { - return computeValue; - } - if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { - return ""; - } + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } @@ -473,15 +443,7 @@ function isItHexadecimal(inputString) { leftShiftBitz(args) { var computeValue = args.NUM; - if (isInCorrectFormat(computeValue) === false) { - return ""; - } - if (!parseInt(args.AMOUNT)) { - return computeValue; - } - if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { - return ""; - } + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } @@ -491,15 +453,7 @@ function isItHexadecimal(inputString) { unsignedRightShiftBitz(args) { var computeValue = args.NUM; - if (isInCorrectFormat(computeValue) === false) { - return ""; - } - if (!parseInt(args.AMOUNT)) { - return computeValue; - } - if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { - return ""; - } + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } @@ -509,15 +463,7 @@ function isItHexadecimal(inputString) { circularRightShiftBitz(args) { var computeValue = args.NUM; - if (isInCorrectFormat(computeValue) === false) { - return ""; - } - if (!parseInt(args.AMOUNT)) { - return computeValue; - } - if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { - return ""; - } + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } @@ -527,15 +473,7 @@ function isItHexadecimal(inputString) { circularLeftShiftBitz(args) { var computeValue = args.NUM; - if (isInCorrectFormat(computeValue) === false) { - return ""; - } - if (!parseInt(args.AMOUNT)) { - return computeValue; - } - if (isNaN(parseInt(computeValue)) || isNaN(parseInt(args.AMOUNT)) || parseInt(args.AMOUNT) < 0) { - return ""; - } + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } @@ -546,20 +484,19 @@ function isItHexadecimal(inputString) { bitwiseAndOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + console.log(value1); + console.log(value2); + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { - console.log(value1); value1 = "0x" + value1; - console.log(value1); } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return value1 & value2; } @@ -567,18 +504,17 @@ function isItHexadecimal(inputString) { bitwiseOrOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return value1 | value2; } @@ -586,18 +522,17 @@ function isItHexadecimal(inputString) { bitwiseXorOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return value1 ^ value2; } @@ -620,18 +555,17 @@ function isItHexadecimal(inputString) { bitwiseNandOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return !(value1 & value2); } @@ -639,18 +573,17 @@ function isItHexadecimal(inputString) { bitwiseNorOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return !(value1 | value2); } @@ -658,18 +591,17 @@ function isItHexadecimal(inputString) { bitwiseXnorOperator(args) { var value1 = args.NUM; var value2 = args.NUM2; - if (!isInCorrectFormat(value1) && !isInCorrectFormat(value2)) { - return ""; - } - if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { - return ""; - } + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; } if (isItHexadecimal(value2) && /[abcdef]/i.test(value2)) { value2 = "0x" + value2; } + if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { + return ""; + } return !(value1 ^ value2); } From 4a9e6fe25a7d16f3f3b91a8acb9ad981fc6140ba Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 4 Aug 2025 19:11:08 -0500 Subject: [PATCH 18/55] Everything Except Lengths Done Sorry for not naming the last commit, I forgot to upload a file and it deleted all the text. I still have to put a use to the second-to-last block and then some more stuff like perhaps a button to see documentation and extras? --- static/extensions/BurningHot687/bitsandhexa.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index a11f75a62..d22c804f1 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -20,7 +20,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.10.0.0 +// V0.11 var fullLength = true; var basesArray = ["decimal", "binary", "hexadecimal"]; @@ -223,6 +223,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseOrOperator", @@ -237,6 +238,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseAndOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseXorOperator", @@ -251,6 +253,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseOrOperator', 'bitwiseAndOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseNotOperator", @@ -262,6 +265,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, }, }, + switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseAndOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseNandOperator", @@ -276,6 +280,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseAndOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseNorOperator", @@ -290,6 +295,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseAndOperator', 'bitwiseXnorOperator' ], }, { opcode: "bitwiseXnorOperator", @@ -304,6 +310,7 @@ function testForFormat(numString, base) { type: Scratch.ArgumentType.STRING, } }, + switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseAndOperator' ], }, { opcode: "bitHexConfigurationLabel", @@ -539,15 +546,13 @@ function testForFormat(numString, base) { bitwiseNotOperator(args) { var value1 = args.NUM; - if (!isInCorrectFormat(value1)) { - return ""; + if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; + if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { + value1 = "0x" + value1; } if (isNaN(parseInt(value1))) { return ""; } - if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { - value1 = "0x" + value1; - } return ~value1; } From ff5b620cc6ee20c23a4d3aebed27480d6583081e Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 4 Aug 2025 19:26:12 -0500 Subject: [PATCH 19/55] Better documentation? --- src/lib/Documentation/bitsandhexa.md | 33 +++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 8ae793d48..8e6bf9d54 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -1,19 +1,40 @@ -# Bits & Hexa v0.9 +# Bits & Hexa v0.11 ## Bitwise Operations for Decimals, Binary, and Hexadecimal ### By BurningHot687/Raichu-Model -If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation) +If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation). -###### Keep in mind that version 0.9 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64. +###### Keep in mind that version 0.11 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64 or octals because they're not here yet. ```scratch ``` -Checks if the provided string is one of the alloted bases +Checks if the provided string is one of the alloted bases. ```scratch -convert [4d2] from dec/hexa to [decimal v] :: reporter :: #15448f +convert [4d2] from [hexadecimal v] to [decimal v] :: reporter :: #15448f ``` -Assumes that the input is a decimal unless a letter is put in to make it hexadecimal (improve later!), then converts it to one of the alloted bases. +If the input and its assigned base are the same, then it will convert to the requested base. + +```scratch +[-13] >> (3) :: reporter :: #15448f +``` + +Signed right shift. Think of it like this: + +We have a number -13 in binary: +`11111111111111111111111111110011` + +The sign bit at the very left is `1`, and let's say we shift it 3 places to the right without accounting for the sign. + +`00011111111111111111111111111110` + +That's a completely different number! (`536870899`) + +For this reason, for each shift, we "duplicate" the sign bit and move it over to the left. After three shifts we end up with `-2`. + +`11111111111111111111111111111110` + +Obviously positive numbers wouldn't be affected drastically due to their sign bits being 0. From d35233ffaa402d80104dd89c0c067b20065ba3b7 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Mon, 4 Aug 2025 19:26:48 -0500 Subject: [PATCH 20/55] whoops 2: electric bungaloo --- src/lib/Documentation/bitsandhexa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 8e6bf9d54..a66ff499d 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -37,4 +37,4 @@ For this reason, for each shift, we "duplicate" the sign bit and move it over to `11111111111111111111111111111110` -Obviously positive numbers wouldn't be affected drastically due to their sign bits being 0. +Obviously positive numbers wouldn't be affected drastically due to their sign bits being `0`. From 9ec6113bc5729e451d513ec5f66862f58d371c9b Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Tue, 5 Aug 2025 19:44:42 -0500 Subject: [PATCH 21/55] Decimal to Binary with Dynamic Length works? I still don't have that much testing, but finally dynamic length works for a case of 13 and -13 (10011 and 01101 respectively) Added a block to get bit at index and fixed bug with nand onwards (caused by logical not used instead of bitwise not) --- .../extensions/BurningHot687/bitsandhexa.js | 173 ++++++++++++++---- 1 file changed, 135 insertions(+), 38 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index d22c804f1..83311d41f 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -20,10 +20,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.11 +// V0.12 -var fullLength = true; -var basesArray = ["decimal", "binary", "hexadecimal"]; +let fullLength = true; +let extOpen = false; +let basesArray = ["decimal", "binary", "hexadecimal"]; +const mainBlockArray = []; +const extBlockArray = []; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; @@ -59,6 +62,33 @@ function testForFormat(numString, base) { } }; +function binaryReformat(Value, neg = true) { + let newValue = Math.abs(Value).toString(2).length + 1; + let computedValue = (Value >>> 0).toString(2); + if (!fullLength) { + console.log(computedValue); + console.log(newValue); + if (neg) computedValue = computedValue.slice(clamp(computedValue.length - newValue, 0, computedValue.length), computedValue.length); + if (!neg) computedValue = "0" + computedValue + console.log(computedValue); + } + return computedValue; +}; + +function clamp(value, min, max) { + console.log(Math.max(min, Math.min(value, max))) + return Math.max(min, Math.min(value, max)); +}; + +function binaryToDecimal(computedValue) { + let newerValue = 0; + for (let i = computedValue.length; i > 0; i--) { + newerValue += parseInt(computedValue[i]) * (Math.pow(2, computedValue.length - i)) * ((i === 0) ? -1 : 1); + } + console.log(newerValue); + return newerValue; +}; + (function(Scratch){ "use strict"; @@ -76,8 +106,22 @@ function testForFormat(numString, base) { color3: "#0a094f", menuIconURI: iconCircle, blockIconURI: icon, + // isDynamic: true, + /*function orderBlocks(blocks) { + if (extOpen) { + return mainBlockArray.concat(extBlockArray); + } + return mainBlockArray; + };*/ blocks: [ + "---", + { + opcode: "bitwiseDocumentationButton", + text: "Open Documentation", + blockType: Scratch.BlockType.BUTTON, + hideFromPalette: true, + }, { opcode: "isNumActuallyBase", text: "is [NUM] [BASE]?", @@ -115,6 +159,23 @@ function testForFormat(numString, base) { }, }, }, + { + opcode: "getBitAtIdx", + text: "get bit at index [IDX] of [NUM]", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + allowDropAnywhere: true, + arguments: { + IDX: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 3, + }, + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: '13', + }, + }, + }, { opcode: "bitHexManipulationLabel", text: "Bitwise Manipulation", @@ -123,12 +184,13 @@ function testForFormat(numString, base) { { opcode: "signedRightShiftBitz", text: "[NUM] >> [AMOUNT]", + switchText: ">>", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { NUM: { type: Scratch.ArgumentType.STRING, - defaultValue: "4b2", + defaultValue: "4d2", }, AMOUNT: { type: Scratch.ArgumentType.NUMBER, @@ -140,6 +202,7 @@ function testForFormat(numString, base) { { opcode: "leftShiftBitz", text: "[NUM] << [AMOUNT]", + switchText: "<<", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -157,6 +220,7 @@ function testForFormat(numString, base) { { opcode: "unsignedRightShiftBitz", text: "[NUM] >>> [AMOUNT]", + switchText: ">>>", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -174,6 +238,7 @@ function testForFormat(numString, base) { { opcode: "circularRightShiftBitz", text: "[NUM] ↻ [AMOUNT]", + switchText: "↻", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -191,6 +256,7 @@ function testForFormat(numString, base) { { opcode: "circularLeftShiftBitz", text: "[NUM] ↺ [AMOUNT]", + switchText: "↺", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -213,6 +279,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseAndOperator", text: "[NUM] & [NUM2] | and", + switchText: "& and", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -228,6 +295,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseOrOperator", text: "[NUM] | [NUM2] | or", + switchText: "| or", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -243,6 +311,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseXorOperator", text: "[NUM] ^ [NUM2] | xor", + switchText: "^ xor", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -258,6 +327,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseNotOperator", text: "~[NUM] | not", + switchText: "~ not", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -270,6 +340,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseNandOperator", text: "~[NUM] & [NUM2] | nand", + switchText: "~& nand", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -285,6 +356,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseNorOperator", text: "~[NUM] | [NUM2] | nor", + switchText: "~| nor", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -300,6 +372,7 @@ function testForFormat(numString, base) { { opcode: "bitwiseXnorOperator", text: "~[NUM] ^ [NUM2] | xnor", + switchText: "~^ xnor", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -332,6 +405,7 @@ function testForFormat(numString, base) { opcode: "binaryLengthGetter", text: "using [LENGTH] length?", blockType: Scratch.BlockType.BOOLEAN, + label: "using fixed length", arguments: { LENGTH: { type: Scratch.ArgumentType.STRING, @@ -357,6 +431,10 @@ function testForFormat(numString, base) { }; } + bitwiseDocumentationButton() { + window.location.href = "https://docs.penguinmod.com/extensions/bitsandhexa"; + } + binaryLengthGetter(args) { switch (args.LENGTH) { case 'fixed': @@ -384,7 +462,7 @@ function testForFormat(numString, base) { } isNumActuallyBase(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (isInCorrectFormat(computeValue) === false) { return false; } @@ -393,7 +471,7 @@ function testForFormat(numString, base) { } convertBaseTypesBitW(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; console.log(args.FROM); console.log(args.BASE); if (isInCorrectFormat(computeValue) === false) { @@ -403,24 +481,33 @@ function testForFormat(numString, base) { console.log("not same as [from]"); return ""; } - if (args.FROM === args.BASE) { + if (args.FROM === args.BASE) { console.log("same!"); // return args.NUM; - } - computeValue = parseInt(computeValue, (args.FROM === basesArray[0]) ? 10 : ((args.FROM === basesArray[1]) ? 2: 16)); + } + if (fullLength) { + computeValue = parseInt(computeValue, (args.FROM === basesArray[0]) ? 10 : ((args.FROM === basesArray[1]) ? 2: 16)); + } else { + console.log("dynamic adjust") + switch (basesArray.indexOf(args.FROM)) { + case 0: + computeValue = parseInt(computeValue); + break; + case 1: + computeValue = binaryToDecimal(computeValue); + break; + case 2: + computeValue = binaryToDecimal(parseInt(computeValue, 16).toString(2)); + break; + } + } switch (basesArray.indexOf(args.BASE)) { case 0: computeValue = computeValue.toString(10); break; case 1: - /*if (computeValue < 0) { - console.log("huh cool"); - computeValue = Math.abs(computeValue); - computeValue = ~computeValue; - computeValue++; - }*/ - computeValue = (computeValue >>> 0).toString(2); + computeValue = binaryReformat(computeValue, computeValue < 0); break; case 2: /*if (computeValue < 0) { @@ -428,7 +515,7 @@ function testForFormat(numString, base) { computeValue = ~computeValue; computeValue++; }*/ - computeValue = (computeValue >>> 0).toString(16); + computeValue = (parseInt(binaryReformat(computeValue, computeValue < 0), 2) >>> 0).toString(16); break; default: console.log("failed?"); @@ -438,8 +525,18 @@ function testForFormat(numString, base) { return computeValue; } + getBitAtIdx(args) { + if (args.AMOUNT > 31) return ""; + let computeValue = args.NUM; + if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; + if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { + computeValue = "0x" + computeValue; + } + return (computeValue >> args.IDX) & 1; + } + signedRightShiftBitz(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; @@ -449,7 +546,7 @@ function testForFormat(numString, base) { } leftShiftBitz(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; @@ -459,7 +556,7 @@ function testForFormat(numString, base) { } unsignedRightShiftBitz(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; @@ -469,7 +566,7 @@ function testForFormat(numString, base) { } circularRightShiftBitz(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; @@ -479,7 +576,7 @@ function testForFormat(numString, base) { } circularLeftShiftBitz(args) { - var computeValue = args.NUM; + let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; @@ -489,8 +586,8 @@ function testForFormat(numString, base) { } bitwiseAndOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; console.log(value1); console.log(value2); if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; @@ -509,8 +606,8 @@ function testForFormat(numString, base) { } bitwiseOrOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -527,8 +624,8 @@ function testForFormat(numString, base) { } bitwiseXorOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -545,7 +642,7 @@ function testForFormat(numString, base) { } bitwiseNotOperator(args) { - var value1 = args.NUM; + let value1 = args.NUM; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { value1 = "0x" + value1; @@ -558,8 +655,8 @@ function testForFormat(numString, base) { } bitwiseNandOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -572,12 +669,12 @@ function testForFormat(numString, base) { return ""; } - return !(value1 & value2); + return ~(value1 & value2); } bitwiseNorOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -590,12 +687,12 @@ function testForFormat(numString, base) { return ""; } - return !(value1 | value2); + return ~(value1 | value2); } bitwiseXnorOperator(args) { - var value1 = args.NUM; - var value2 = args.NUM2; + let value1 = args.NUM; + let value2 = args.NUM2; if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -608,7 +705,7 @@ function testForFormat(numString, base) { return ""; } - return !(value1 ^ value2); + return ~(value1 ^ value2); } } Scratch.extensions.register(new Extension()); From 48e45e9010fa5e45b95592b08438dd076681bd98 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Wed, 6 Aug 2025 11:51:54 -0500 Subject: [PATCH 22/55] @SCsupercraft the goat Thanks for helping me get the extras working dude. Yeah nothing else, just the extras button works thanks to @SCsupercraft so cool --- .../extensions/BurningHot687/bitsandhexa.js | 75 +++++++++++-------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 83311d41f..dbb140f8d 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -20,13 +20,41 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.12 +// V0.13 let fullLength = true; let extOpen = false; let basesArray = ["decimal", "binary", "hexadecimal"]; -const mainBlockArray = []; -const extBlockArray = []; +const extBlockArray = [ + { + opcode: "bitHexConfigurationLabel", + text: "Configuration Settings ⚠", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "binaryLengthSetter", + text: "use a [LENGTH] length for binary", + blockType: Scratch.BlockType.COMMAND, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + } + }, + }, + { + opcode: "binaryLengthGetter", + text: "using [LENGTH] length?", + blockType: Scratch.BlockType.BOOLEAN, + label: "using fixed length", + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + }, + }, + }, +]; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; @@ -98,6 +126,7 @@ function binaryToDecimal(computedValue) { class Extension { getInfo() { + const extraBlocks = extOpen ? extBlockArray : []; return { id: "burninghot687bitwisewhexa", name: Scratch.translate("Bits and Hexa"), @@ -106,7 +135,7 @@ function binaryToDecimal(computedValue) { color3: "#0a094f", menuIconURI: iconCircle, blockIconURI: icon, - // isDynamic: true, + isDynamic: true, /*function orderBlocks(blocks) { if (extOpen) { return mainBlockArray.concat(extBlockArray); @@ -385,35 +414,14 @@ function binaryToDecimal(computedValue) { }, switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseAndOperator' ], }, + "---", { - opcode: "bitHexConfigurationLabel", - text: "Configuration Settings ⚠", - blockType: Scratch.BlockType.LABEL, - }, - { - opcode: "binaryLengthSetter", - text: "use a [LENGTH] length for binary", - blockType: Scratch.BlockType.COMMAND, - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - } - }, - }, - { - opcode: "binaryLengthGetter", - text: "using [LENGTH] length?", - blockType: Scratch.BlockType.BOOLEAN, - label: "using fixed length", - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - }, - }, + func: "openExtraBitwise", + text: extOpen ? "Close Extras" : "Open Extras", + blockType: Scratch.BlockType.BUTTON, }, - ], + "---", + ].concat(extraBlocks), menus: { BASES: { acceptReporters: false, @@ -431,6 +439,11 @@ function binaryToDecimal(computedValue) { }; } + openExtraBitwise() { + extOpen = !extOpen; + Scratch.vm.runtime.requestToolboxExtensionsUpdate(); + } + bitwiseDocumentationButton() { window.location.href = "https://docs.penguinmod.com/extensions/bitsandhexa"; } From 62c3af5fde67a0e98523f159faacd1e4d3454a39 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Wed, 6 Aug 2025 13:08:02 -0500 Subject: [PATCH 23/55] Still some problems but working on it! Dynamic length is easy, representing values is hard :( Lotsa testing times --- .../extensions/BurningHot687/bitsandhexa.js | 218 +++++++++--------- 1 file changed, 106 insertions(+), 112 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index dbb140f8d..7688b1ea2 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -20,102 +20,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.13 - -let fullLength = true; -let extOpen = false; -let basesArray = ["decimal", "binary", "hexadecimal"]; -const extBlockArray = [ - { - opcode: "bitHexConfigurationLabel", - text: "Configuration Settings ⚠", - blockType: Scratch.BlockType.LABEL, - }, - { - opcode: "binaryLengthSetter", - text: "use a [LENGTH] length for binary", - blockType: Scratch.BlockType.COMMAND, - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - } - }, - }, - { - opcode: "binaryLengthGetter", - text: "using [LENGTH] length?", - blockType: Scratch.BlockType.BOOLEAN, - label: "using fixed length", - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - }, - }, - }, -]; -const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; -const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; - -function isInCorrectFormat(inputString) { - if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { - console.log("bad string") - return false; - } - console.log("good string"); - return true; -}; - -function isItHexadecimal(inputString) { - return !/[^abcdef0123456789]/i.test(inputString); -}; - -function isItDecimal(inputString) { - return !/[^0123456789-]/.test(inputString); -}; - -function isItBinary(inputString) { - return !/[^01]/.test(inputString); -}; - -function testForFormat(numString, base) { - switch (basesArray.indexOf(base)) { - case 0: - return isItDecimal(numString); - case 1: - return isItBinary(numString); - case 2: - return isItHexadecimal(numString); - } -}; - -function binaryReformat(Value, neg = true) { - let newValue = Math.abs(Value).toString(2).length + 1; - let computedValue = (Value >>> 0).toString(2); - if (!fullLength) { - console.log(computedValue); - console.log(newValue); - if (neg) computedValue = computedValue.slice(clamp(computedValue.length - newValue, 0, computedValue.length), computedValue.length); - if (!neg) computedValue = "0" + computedValue - console.log(computedValue); - } - return computedValue; -}; - -function clamp(value, min, max) { - console.log(Math.max(min, Math.min(value, max))) - return Math.max(min, Math.min(value, max)); -}; - -function binaryToDecimal(computedValue) { - let newerValue = 0; - for (let i = computedValue.length; i > 0; i--) { - newerValue += parseInt(computedValue[i]) * (Math.pow(2, computedValue.length - i)) * ((i === 0) ? -1 : 1); - } - console.log(newerValue); - return newerValue; -}; +// V0.14 (function(Scratch){ "use strict"; @@ -124,6 +29,102 @@ function binaryToDecimal(computedValue) { // throw new Error("This extension prefers to be used unsandboxed"); } + let fullLength = true; + let selLengthIsFull = true; + let extOpen = false; + let basesArray = ["decimal", "binary", "hexadecimal"]; + const extBlockArray = [ + { + opcode: "bitHexConfigurationLabel", + text: "Configuration Settings ⚠", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "binaryLengthSetter", + text: "use a [LENGTH] length for binary", + blockType: Scratch.BlockType.COMMAND, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + } + }, + }, + { + opcode: "binaryLengthGetter", + text: "using [LENGTH] length?", + blockType: Scratch.BlockType.BOOLEAN, + label: selLengthIsFull ? "using fixed length" : "using dynamic length", + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + }, + }, + }, + ]; + const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; + const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; + + function isInCorrectFormat(inputString) { + if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { + console.log("bad string") + return false; + } + console.log("good string"); + return true; + }; + + function isItHexadecimal(inputString) { + return !/[^abcdef0123456789]/i.test(inputString); + }; + + function isItDecimal(inputString) { + return !/[^0123456789-]/.test(inputString); + }; + + function isItBinary(inputString) { + return !/[^01]/.test(inputString); + }; + + function testForFormat(numString, base) { + switch (basesArray.indexOf(base)) { + case 0: + return isItDecimal(numString); + case 1: + return isItBinary(numString); + case 2: + return isItHexadecimal(numString); + } + }; + + function binaryReformat(Value, neg = true) { + let newValue = Math.abs(Value).toString(2).length + 1; + let computedValue = (Value >>> 0).toString(2); + if (!fullLength) { + console.log(computedValue); + console.log(newValue); + if (neg) computedValue = computedValue.slice(clamp(computedValue.length - newValue, 0, computedValue.length), computedValue.length); + if (!neg) computedValue = "0" + computedValue + console.log(computedValue); + } + return computedValue; + }; + + function clamp(value, min, max) { + console.log(Math.max(min, Math.min(value, max))) + return Math.max(min, Math.min(value, max)); + }; + + function binaryToDecimal(computedValue) { + let newerValue = 0; + for (let i = computedValue.length; i > 0; i--) { + newerValue += parseInt(computedValue[i - 1]) * (Math.pow(2, computedValue.length - i)) * ((i === 0) ? -1 : 1); + } + console.log(newerValue); + return newerValue; + }; + class Extension { getInfo() { const extraBlocks = extOpen ? extBlockArray : []; @@ -136,15 +137,8 @@ function binaryToDecimal(computedValue) { menuIconURI: iconCircle, blockIconURI: icon, isDynamic: true, - /*function orderBlocks(blocks) { - if (extOpen) { - return mainBlockArray.concat(extBlockArray); - } - return mainBlockArray; - };*/ blocks: [ - "---", { opcode: "bitwiseDocumentationButton", text: "Open Documentation", @@ -353,6 +347,7 @@ function binaryToDecimal(computedValue) { }, switches: [ 'bitwiseOrOperator', 'bitwiseAndOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, + "---", { opcode: "bitwiseNotOperator", text: "~[NUM] | not", @@ -449,10 +444,13 @@ function binaryToDecimal(computedValue) { } binaryLengthGetter(args) { + // Still need to fix monitors here lol switch (args.LENGTH) { case 'fixed': + selLengthIsFull = true; return fullLength; case 'dynamic': + selLengthIsFull = false; return !fullLength; default: console.log("error here?"); @@ -510,7 +508,7 @@ function binaryToDecimal(computedValue) { computeValue = binaryToDecimal(computeValue); break; case 2: - computeValue = binaryToDecimal(parseInt(computeValue, 16).toString(2)); + computeValue = binaryToDecimal((parseInt(computeValue, 16) >>> 0).toString(2)); break; } } @@ -523,12 +521,7 @@ function binaryToDecimal(computedValue) { computeValue = binaryReformat(computeValue, computeValue < 0); break; case 2: - /*if (computeValue < 0) { - computeValue = Math.abs(computeValue); - computeValue = ~computeValue; - computeValue++; - }*/ - computeValue = (parseInt(binaryReformat(computeValue, computeValue < 0), 2) >>> 0).toString(16); + computeValue = fullLength ? computeValue.toString(16) : parseInt(binaryReformat(computeValue, computeValue < 0), 2).toString(16); break; default: console.log("failed?"); @@ -539,13 +532,14 @@ function binaryToDecimal(computedValue) { } getBitAtIdx(args) { - if (args.AMOUNT > 31) return ""; + if (args.IDX > 31) return ""; let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } - return (computeValue >> args.IDX) & 1; + if (args.IDX > parseInt(computeValue, 2).length && !fullLength) return ""; + return (parseInt(computeValue) >> args.IDX) & 1; } signedRightShiftBitz(args) { From 40d463882c6c40001c2a73882fe550cf853e9742 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Wed, 6 Aug 2025 19:00:57 -0500 Subject: [PATCH 24/55] Cleaning up opcodes + bug fix? Featuring an actual documentation link, hopefully binary to decimal has been fixed (not tested due to lack of time), and opcodes for labels have been removed --- static/extensions/BurningHot687/bitsandhexa.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 7688b1ea2..099badd25 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -15,7 +15,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI TO-DO: - - Add more of the blocks that TrueFantom had - Get feedback */ @@ -35,7 +34,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI let basesArray = ["decimal", "binary", "hexadecimal"]; const extBlockArray = [ { - opcode: "bitHexConfigurationLabel", text: "Configuration Settings ⚠", blockType: Scratch.BlockType.LABEL, }, @@ -119,7 +117,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI function binaryToDecimal(computedValue) { let newerValue = 0; for (let i = computedValue.length; i > 0; i--) { - newerValue += parseInt(computedValue[i - 1]) * (Math.pow(2, computedValue.length - i)) * ((i === 0) ? -1 : 1); + newerValue += parseInt(computedValue[i - 1]) * (Math.pow(2, computedValue.length - i)) * ((i === 1) ? -1 : 1); } console.log(newerValue); return newerValue; @@ -200,7 +198,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, { - opcode: "bitHexManipulationLabel", text: "Bitwise Manipulation", blockType: Scratch.BlockType.LABEL, }, @@ -295,7 +292,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI switches: [ "signedRightShiftBitz", "leftShiftBitz", "unsignedRightShiftBitz", "circularRightShiftBitz" ], }, { - opcode: "bitHexBitwiseOperatorsLabel", text: "Bitwise Operators", blockType: Scratch.BlockType.LABEL, }, @@ -440,7 +436,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } bitwiseDocumentationButton() { - window.location.href = "https://docs.penguinmod.com/extensions/bitsandhexa"; + window.location.href = "https://extensions.penguinmod.com/docs/bitsandhexa"; } binaryLengthGetter(args) { From 943474584d0ef74b6c5fab995f148a8e428fa619 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Wed, 6 Aug 2025 19:09:03 -0500 Subject: [PATCH 25/55] Updated banner --- static/images/BurningHot687/bitsandhexa.png | Bin 153220 -> 141744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/images/BurningHot687/bitsandhexa.png b/static/images/BurningHot687/bitsandhexa.png index 626b02281d3bd813afb16a4f6e8fb04bc58646e0..2097f2f56fc3148748bd545859d4fbe6dae5a86d 100644 GIT binary patch delta 91945 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�WRoisfLHLP)nhm(p4=1v39YaW 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 z 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

c(EH(P3cP18TMV^eXRMf$mv!(hh zF=B5x3kOy?#2pc|Q0yp)%PJ0Pm~k*-4Cfchf7Y2jNuf2j8Ni-~>1;^= z5UB$^q6t*BkJ+7)H1(;uDb#0uhLh^Ot&t#Ebl8L|12Q#6Y9m_CZ1OW_2bYC({>#WF@Omm zv5~C4#yCL?s&xUR>HBS?_!+-Tuo^25gxvNk&+u(NVv;>b^3TGyXDn|ch~kjPNJh%z zdUcNV?rv>9-N6xSN5xu9v`dS1-8h8Fe>cAYR@5aN^%D%;@l~up2l{LxO=uUU-e$IX zSAUhp=5xHmt~@s9 zHq4gVn9;$>@czw8I9^^qn@$25WR5<Txo2EJG+LtUhy>X7QXsqRdujwA2f!?MgI5>1mUqjv=5iQYf#iZ)oyv!bvM2VV z@k7{(&sd3(rSo^xR?#}~B#|&r@h?;enZcYuSygG=E`+rd%KrE!_S^?|^$VW7i={7) z!Ym5RaU8FblynOO*{nv{f5&moql6b$6aqENTqQ?>tU&PS!D<~omVF;eSeS8a=~4~%xr zIHeu~g243Hd=9tww7gc^?vzwa!>#!8Gj1J*{&rfjKA$FZv#ngLf6wT<$!k>fKzLi5 z%dQxyR5x5l{UV=s;`Kz7Ll>h9mE(k_@GR89KDJ}YjJ0A|V%!M`#>zn3R_4mLE%;`o zSubUfJ~o+Dp+maYg5tDNG*}j}*zLsBw`)|#0Z`43*oWD+v2A5-utb2{cD2951QHU{Uon!*-8!BkzROGu;t>Af9wA+X50`ob8iT)4w6mME*8Ws z1=~;D)8%t-1pQZckflKHyXe}~by;hV>Jm@@u@4$3$Q zD%^*I0`e}V9px9YiDQ`on&1S<^85%1H-VomLT~dG^CcWuj$8ExPF4p33eB$K-+q0i`RlIi4XIPf6X&8@y(WD1BR9sX_rA!m6y0V z<`#{BzhGL5GoZ}O>Hf+g(>AWN%yYLl%kIO)>w=7ffk0`MjL#yEk$9u`aJWI+HOyOE z$5`I5&L&PsYp<*lWnpvhZG|EW7ZYjChR^G%@%BvE0|Be`oJ~UQdj(k{Wa_XYLdxVc zt;Lwwe;UiHznJn_Pmr~Swg$lV#D^Ecnm?Lm?a9<&N!b@~JF*ux{b|J!UTULcJb*5SgEtA}Nwu@Frrk6}z@{MvRsh=%@|)y@mACAm%mGH2#CvC4@$ zsv3K-`I1R!0EB?MdZ8@4{$ukD{?p7cY7@H9f8@6R4c`MP!>1CFTNy_6<2qdLpG5-P~DB%1Npb}R{Qz72s# z476D7&1nZ?%g#L)hr{=puG2&*P3l|E_Lq$p=3h6)NBM^D!}i%U_o95Nz!t6UAm;=*-l3#D8ok%|@z6Ec?@f2*@QF4>AgIbkmv19`sEl~V`2?4;Lzl;ie7 zhb`+ux@@?3E*dtL8otL_5NG^hq)^BvBpta+@ef8!KW4TxX!V)bf^6HCBVoBIdL8U( zjc+m%$nj!d_dW_LZ5Ea+BAnA4=qoVzqMUqz-~=i z#_0G`H)#YtVDNr4?xGt58!wK%r8+LXAI;CvcplAX0~A=>-o}5_VN00bN;l z9@HOkiEFo!tpFs~*S4+eZ#E|(e_QjH?N;5@uK+DqcM+%{$J&iGkWlA(%hXh?jS*hx zg8G01y)At$(;iSDDZ|iVK~(!Rz)V(qO;Z@3Nq5$((E<7NGZGz=sEwS3`8Z5O0fRpYeFo*lzPe_ZjiQGJz+ zawe=%fYo~411!-vl?Ie;6!!VGN(zvf9Pv`A0_v)k3=HOkL}Jo>(6uSs48ThrgsIE- z(R&*8o{H)(W{trfpZXj+SieR%Vz{}gIA5lgBY~Q!yKk4A$s1n z>7!5#Aky*OfskowA}tF-ZAd?Q?=lclisI0YSWwRAMFe@>>FR&W{mf-_&L zcVw0%X8a^|anLkh1QbSS49cZ^d*`DW(mtLEcFV3Eq9K<@$ro}zi>s5X=csQby;~F= z23Q3;m)^T)OJfY^wN~*EK<<;eJQ%j}y+Qkc2X|x+Ky);5OP7p7{cDqq% zE7d=L@a5a?JekiRwC&IGYf#3vD-XjYHU;)kIhRSy8wc5@vX_LI1p*=Up__3eJT}*t z*to@HbFELe1=gq<{I;NL6fX*EYCKU5>}5>qSZ=E|H)p8Pe+?ngEJ8RiHQjO4HZT0Y z3eZ+}z#0BF{#b!x8-LN*-qzbNRob*gADCj-%>H33&*HLP^3+GxE+T>y^xfyeXsnp@ z?bRs%(eGHU5h`R?DINs$v~U=Tw)`cUmwq2Ssfa=~&lgOMLacI}B33B1cw9jr*Y2=D z#I&=F+a||Ze+7Qdb#Y?aL*h9trMwpTQ{I!vk$AtM+gfLRhGGgJE>b#A`)$71lY!`) zyc^RS#tusbOlx*s7}BwMM&Wmt1{f1*03MrX-HAzHtfdV?r+#+Mn_FCC2P?9v$P@s`7yz(Svt$YYlmGy1d3-`50ICfD?DR=K1pwHoliU{o*rFV%2mp-% z0GTL9BmzLY0AN*rfl@32z`_8atUw|z1i-EVfLXROM*@Jo1ps!ASdb4uU;u!bLM+Sx zAUFa5Lmm^&10YNTpfJ+E;Hh75g}6uo0Km(Y&6i8kGZeU$&>DC0@ZjPh;=*jPLSYvv z5M~MFBAl0-BNIsH15C~g000{K(ZT*WKal6<l4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg z3k&TfVxhe-O!X{f;Sr(c(0*Tr3re@mPttP$EsodAU-NL?OwQ;u7h9GVvdl{RxwI4FIf$Pry#L z2er#=z<%xl0*ek<(slqqe)BDi8VivC5N9+pdG`PSlfU_oKq~;2Moa!tiTSO!5zH77Xo1hL_iFGB)~inLI&i3915WrmO&X*z&h9j zwXg#kpb?tk5VXNDI1T6E5?q1na2Ez(7@ooyyoLz`LC6RbVIew*5n_(mBF+dGnT`Y^ zVMsKRfTSSlh!jyG#mI7`0;xi3kzGh5@-1={IgMOE`jFemATo;lio8cLl!3BQ1JnX_ zK)I-Y9~z3rpmWi5G!I>XmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`q zR|$iJF~TPzlc-O$C3+J1#CT#lv5;6stS0V%As!)~C0-{E6JL`^Bo4`vn z3rTB8+ej^>Q=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJ zloCocWk2NvrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&Gx(VHb9z~bXm(pwK2kGbOgYnv-SO=4TJ`Rq(~1^XLzFMCW=LvyNTtY(pBo#t`P0S?Bo;P5%woJ!6i z&JE6cEdwn-EwR>Wt!Ax$tvA|w+P>Oi?Q-oF?d#g_b#R?Poh+U8I&C`lbqTtEHo8%| zg}U2y&+0zYW9xb83H8eL4(Z*|NA+#=qxBc+@7C|pA2%>G2sV%zY%w@v@XU~7=xdm1 zxY6*0;iwVIXu6TaXrs|dqbIl~?uTdNHFy_3W~^@n!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs z+A-|>>;~;Q_F?uV_HFjh9n2gO9o9Q^JA86lFJ5+DSzi0S9#6BJCZ5(XZOGfiTj0IRdtf>~ zJ!SgN=>tB-J_4V5pNGDGroJNIJ-#D;)_$3O2mGGQM6NZadh`A z)~w`N`)9q5@sFvDxjWlxwsLl7tZHmhY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0= ziQ{tu=WLoYoaCBRmULsT<=mpV7v|~C%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~< z9TW0|n}ttBzM_qPqEWH8xJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|=X_mAr*D$vzw@+p(E0Yc6dFE}(8$(^sg%jfZm#rN zxnmV!m1I@#YM0epR(~oNm0zrItf;Q|utvD%;#W>z)qM4NZQ9!2O1H}G>qzUQ>u#*~ zS--DJy=p;!)zF6U4XqpTjpZ9(ZA#vBp?Yfdj?J{q%FP2cVKwbr%(krC@}V}P_IjOv zUCUPet*f`b*(Tc7zuk9x^A3X@6+7PVluPjwY}~KEzp@E!QZ|hqNIGzT<(q(S+MDf~ceQX@Dh|Ry<-sT4 zrhI$jQ0Sq~!`#Eo-%( z$2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXl zk6rM8ym0g)_hQ>6w@a-(u02P7aQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzIS zE?u8_z3;~C8@FyI-5j_jy7l;W_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G| zz+lhASr6|H35TBkl>gI*;nGLUN7W-nBaM$|ogW_?4H~`jWX_Y}r?RIL&&qyQ|9R_k ztLNYS;`>X_Sp3-V3;B!Bzpix-sAr}Hm;jubF#eV~3$?7`s&pD^6y8Gt) za*mTDGXnz?0EZ+4hy+1E5Lwo+L05n4qPwi3qN^Bp*L7C~5fg%vOeBE;h9OVR>E(D| zxVgJ4oO6DEd{3(C>c02g_vX#;g*UgmtLoIr-_Q9*?Z9}bGG}0ru=Z!Jr8)q-u3JJx z5p-9m7A@Iv5r3F7H^F)lmb786F;zg(Z{2ARpi5QKm9p&o@e=y-LDSxV(KdWq9Z(K;3zn6aZlgh?w zVMYX^8NgHy-UT9AKyd*$!$0Qg8P>VF3HA1nTk>E`gKGw%6?mQlMNZ7pP5N*p_E|iv z{J!4JuZ~dwB`1KMO`yKc{mCp6MQSew2B8!XMPL!R>{{95Sxp(ET4Pd@k+xLM9V&EV zrj4jNr+=z#sB)I-J=K1%+{x@ef6_aHW)LY2rX_e6U{XWz9HnHhrP^4V8fFdwpaAho zm)cq4!!{L^Ho--6MF6R$xvWNAK-eu-%Nq#;Okb8kq+tFx(CcTVARC3Jj2w1O4e^x1~_Uv z7nNg})^;zH09q_*=a@f?17wh5ft%G^GLS^eMlq-B6c5adq0-K5#qVv_KFsVxl|823 zk-F$VyJ{cn;{}QhZ`mx%jA-HiDY}*Wg@MyfWf!X+1HY5a%fv%Kg<`)>i zRDd(86{(2h-Me(3kWHV z$4lr*1-BmT@3cW!rc?f2ZMRcNYCuZ`trQqSubyxh=vhHkZW`PZ^hrhiQLcxseC{_U zbrZYh76YAgUQ%p6%tw*wH=sIsrJ5y!6f+=WK=JuB4Ack-31T1*{6(Xys}xc0qygy z@Me>@svS)X(W`-2xgYGF2mr>lyr*_7xJercD68C48lPaJE!BC6@e9^__+y#DQXQ;R z8-`Jq%dcxgKUHC6gN7|n1B|<#_kZda9)QN0cJzc~=)ay>(0Be2Nn@#WaLB2}bJcR0 z@4wnb8`jshikJG@LQDUxelP5=7q`#YxfVWdfQVL5<}jgQ0G8_QBhOQ;m#FQZN_->c z>uaTHHV&lCUmCVfx;@9HO)>pty)_X;=?~hZE8rmHDM9sub!PABw{LmASby$oUh`Y! z5z_|SFV1F9!|X?OV`xDfss42Mno{8?KhJmxWZC!9786L#?A+5JCQ^HnwS#K<(&7Po zP-5tPhQR|@S7p0*hX-{_I`}QrCsxb#^;?+@mMu0=tDQa7FJ2$*9VTgNJ)?B$5sN8; z69Nn8gdI#bhk0<1_OZ4M7=M!{L$`)8;uhSf?!tQ00QQK!-Q@HGNOcP;3L0elUZx3z zl-t*DQ>!D^=N7w(*t%3VegvEQQtzp|r#cZ#2nDUdHMLP|@;c>K^t&X$sw+2SAO>w$ z+i5mO4|wa0k*l8vR%9TBb|6aCoTQc_J1;d{uutO*9n{T_7j5o>7Jsh<6y;0-GaF%# z7RhXm_Gelu_M~sziL3is~jK8%(4o4+6M5;B^2%+{?00&CtA7=NNOrp>yq3NI@B-U6li z#fp;Qza6_CLtM{8nD!w@%I~z313;i6Hj@I-!F$54tAM{1+hDE4_Nt!3&M$9Np)jdl z=Un?(?;9$B#Yx?W2CuXSd8X;>8w?-rmkPZCMo}{3ZzYT zL$TMYT0Fn@D7vyzoPzObALGk1FXlED)OKZ6>djbHntufY&b*N_BX0#TWxdU8%ggH~ zD8ctqwaY@r?<8h*6$QfR(baN$ezWcFxwkrQz55!oUbT!FM~CX(7L-vd(dzx~yzaPV zuHiemdrUje*Ge?=ux!V??WOuXx`%@PpmkBU8R{v+F_gNwzPxqGTs^H)GC)#Q_F^Nv z2ir)=+kf5u*Ld17Fy{totI9Qih?o)sbLoj3|7B*cWz4KmKQ<1*1+4^xIRx@DC=5V| zOEDMJqh#~t=5E+Cm3{z2SwdJ1&EdzwNvthEw3sE_->dT!!9BKktLE%k52|MkGB6XX zEo8=_w8-+?8Xiz;bJ*AY$TMD-JlhUnINwXvW`C8(xd(}^@5%@4Wdkf1Nj7ZCxx!cj z-`o4XlJ0rgys>g43p&+Y_q@jl3Kd*FJE!i@8lk$48GW`Bahi?H2EOwn#!C0OcLqs; z0RX&gfa*XL3)|1!JDiJfWfRunYkGGX_tz=2`id!*+ribv96Zl}s%_o!C@ieHTUJ0_ zaDOfA<6h5~x_7Lcj0K4MuCda#*43xCy~MOEknFPtd-puIA@r-8t{e*de20%MWK~Nh z3`I|9mRgC3uFQFJZ-rlL1()sKNn6ZiZoC|61LVPD_QY9T+ZE;0k|-&J0h? zRVi~1**59mbI|5~fP{iy(kY$Hcj~kN)qlBei`A8mE5C;X7OVzb*}W%_l+><^KJQ)X zKGu6rIEGr=b>a7}9tOw;)u$hY<{f~w{W2R`ur*W}W50G)*ONOM26qzEmo9H7r5mD* z5ey#3dH}(g^=_u;{bAhC_o|vXG&7+!07Sy4DLMdu=}aj(p)Ja-+-}&AhFsOlz+4R zThT7m9gKB|W`c6WL zfmn2_U5+ZVVc7+3^F=X}zf6}*JbxYY@kaIx)^?z@&-9%3nV-yNBey3{-BZ`HI;K_) z*sqWJf~$TTZl8Pmy%Kh#J(GE(`+T;3BtvEd~V=T6$%huAq@7Rz{HX=A9iudb`i z20Umud!$Nc4$&dh?AY4pb*ye{lrY|xUse&;dndZ5ONW-gVSrJ^Z2r4)-G2inP*OWq z)rb`a%j{LNom*xSmQhlP1e<4RZfn~~J@xASYaZg(;UKuKb+A@z>g+3JJ_Pn5%ym)u zu?p~G%h8?I|->jxBbquWkzUvR0{%WsKkOg~MSouMFPQa8MgAX37N^^Q=XyrZO zyZg1zUk_~zwWd%PHe7;I=6`+4f-(O-X8P3Gcxek@0B=<9_kM=(Gu>xX1<^D$`5mRE zsP{VHQ37zLJB~Fm1GsEk!k)1_&d-O6kPU!w7GNBJM7`>-EDdul(VEbqjR{yL){XY}X-2pxP)n4VU9BNorA*JLn1894bDk}|-u90-s0V|w zWv%YN;lPE@SKCspPTe(Ls&;rNEze2q?(YSBb)c^Le!Fj#-5~uiRqZeP?Jwcy8o*h8 zDgD=mx&Z>Uo`1Gfdz&2D9>TR1bA?9rLD&}N6KOMMJr;xYV;14_<|Ng{v%HOdX|Pj$ z$1;>kALCo!ve4zG9p$QZ~MWiR@|QD zH=i&@n00@r&B22@S`hVy+C4+vqoZP_OVzIFKUZp)QQz<3GZo+geWMIrRmt`CX{bhXIH{-J#C&|617POv_NQNa+6L1B z;|j{NJb#Ay7nZU?1aBd1!2({u+(ip;xM5&CJajM(5)D-Qg9TCm^z?CW^4;L3;F62G z7k)p{WwB)C9o6UU z=gQpgNv7QUUR$sJHfAC9tACY3&``ZA1d6@o>wk*GM_c}9?F(ruh6NLrKU!PFvMNhc zux$gD++i!M8)wEFw>+P0`Yo*$wDfC}=0X@^f&iTm1bVczjxZYBhOE#Yl=MoadKgpi zTOWP_nxht&kh)HzR}vW*m-j50eq*hJ&AR-I9ZRKEebvJItt2aiFD6EtyQ$PnekL|p zD1R}oGow;1gW3-US#_@)%r6HqWBX^&`*g7RQF(Sls_bI)*OeCxY~4E?U@N!7@)A;! zTc)K^Qk4hscpP|g#hH`0w#NEY2j&=&Z?~1q*@*Wv{=C#q-)`^8;eWIBtt=jf(miK} zVXE_@)I*i){hsgriPrnM^l%+e16Hw2Jb&wVmKjQQs;8h<0LX~=WAP5;`h*u~LhIWaCbvTh>Orc;hH*mlP zmSoIJBm6;<`S&@)?eZ>6>!Zs2%X>#?4@Fh2mSaEG^iyT;33K*U?PLA>!hVA9qkn#D ztMBxv>~lSgw7g#F4&mPCZE;woyngQr>&$BRP}@ER2F?@(sf3*~VPpC+-T}O#XaA}8 zl{en+!Hhjjzt1~ZFkkIkf*))+8o@QBi%!5Ox2j9S<-OpjF9Ki&%NI(lfcn*Pes`Ak z(m2LUu1q6oWdM|tDC{9bliiUv4}XM`-LUC)?OK+oJt7PGLAmS1(v-t5E=groSYbB+ zH^#a=Y~didJufK7O0yX}zlS+|l+aUU%s}Hin=+jk+DSNc#g^1>ezuJM!xs)r6)dpIebwK}RFz(x zow{yma-wD!Z(xLWf-9lAXDd56vl5|jO;jdT&nB-2b=v@{tckiY=qYzF<8g*&ZP zwHbR@r-E2cnbptL=RD7ISi<~MnryXgqIKJ!G$hv6SDE&E4>zxJ^z+Z{&kU4i$nY1= z$>uAHEdLeI8k7{?)XP^llr)0^b6W|N4|ooImcVmR zj&&@k1zuqXo3CwzghtZ2l36y;#!dn*2)-2xVhTD%b)OPzA>CBnTb}N z_oa7+o5Y|x47hGLMz<-#EP!5#QF);4vIc4wqdB>hK&ZLdo@4|Vlr@U9F~x!gvmW~o z`^Rr)RIc4*IYNf3D?`eeS4+CnRFCMo>RLRA1_3KyKi3aWA%C!{qqCEmRo4fC@4*;Z zKv$VBOREW2wl-Y929Nu9o!J`hdB#2J883lV0wh||T%o|RG?(n00sv9U2O0u0D#Lm@ zGH_^4CuOaflj8EAOfD>w2lR^(@ygqo8GjvhqIm+qi0-ehq=$azOjAQVEz3p zXfrqa6oFsrZ_ey|2v9c2rpZ2P*B~=NEE(5s9+kGzI{vBqT(eY~?qSer`nhOu}bw&p#wuT);rE@nE>m|Lo|dHtbQJ}D8qO9f4cOnu6cBsn|xpO z2rXh(I)8oENeAi}Lmip=)=95Qi&VRfzzt>fl~uqtfTwxzRhcXdfH^^MX-*qp#%tBT z&}NADC&2);gk=WaI^pjuoQKRtsJEveGH6t0*SE%}){damhOkX%2v|aC;8RWB=IdOP zR#};)MNOYQBQ4LL3hg}Wp11vH`@zP2;+*2Ixj0Z3Y`FebCNza&j8wYo0Z=(cySifwaSMWp( zkxG)rn7T>A+k8pKYm~BpDwI}f-)7@{;MZMXhZo%M*Q~DeYjy9nV`c{$e*Aj&Ky$wp zlxw|072%THtM2+rH+E`;&0?o(Ci&oJ!;fKau-;os8%WT>%Xv@FvxDkU{t_;p`hVxc zN9tA~^OL8C+n2eZw$Xr9b)ya5Z@^CpJULxHb32MX$++|;;r_ymWWX4ua>f9`Oh8P) z+IiW9Q1X6+2M%E!>m;Y)R1EE*$d>JF)pg4t7K|VI0G>0Z>dDFf?xdd8TPt;{Wh7^? z1ZmUlwY_qhX=fW)SDEV0v-FFt1Am9hXkh!5bBKr`ia4Suf`~byNVqgX%y?YU9P;BX zrG}CkvQQ|@Kc%d6gWeMfjwlvX9w%TXr3Nb$l+=Kv;H*kppkfaLb{xDa&Z;yB9QrnU zyC70?as#qFSmxkdyAVAtmKf&&lZ2aRT634Cg$n^87@~-INsp-$WuPEt2Y=XuwyrP| z*ZciOB^;o^*X=Ld&K-Y`Hq55-11%2&uxPT&dA6;oNR*`S2*BRCb7)-S%1)APjc10dquRI zdiaT@>*nqmm)#F+`M+h=-g3cN<;P{zG2BT9qBE*{ee)(tlgWGXYobN#^GR;~dZoBI1Y=fh38LG$JGofjEv3#~x%khG(SC zQUX#c6uCs6OXRsmo=X%tWo2MsV1gluBgBb7lF%t!DLSbaQX$V3ST0c%29CbjG=OXpLVM2l<5`P3biV9qd_Rn=un&56Ea9FPSkmHS*;mvD}nP!(1PVU4o60aB5mHpQ`NpJ0e$ z0>e&PV!hamM5HJPOlO%wmV%`53@D@~kX2}7+h^_bSb2)N1FCJFA4dSr)`kVwoo%0G zv|$@rSa_v>OMhQ=`8GFkg6FLrn%ldp_Cj@I!piUI*_7;@=4K3(ldeX>0$dKM3_|4s zqz+_`H#2SzC=4Q^{ohKAb*f+kb}PVuU^wYC#fel#`br*)u?Y4VP2fy(yU#PT@6%jT zikTp*Hh8jzvkhZ3F?6NxtsS7t5>c^B>p8Hw(vt3I8H~_Q{A{su!suP-3%CFwn`=0u$1WdKM_-YqX<+r|l z!b;UKg5hOSAK=I8z?Z470a`YuiP_bSTQS|kOodpbs~n5rz3r`wG2?)ixg@whgC97!V3Xj;(8Aq3ebNlAb*ihwL*P=z9iW3Ev!QZsVRjOwm;Uetzf z7(^U~37bbaoElH7V2*|;U4c^eX`|lcKokkYF+-e0XfzlaNrXm|BZ;|dW0*3A`q@aX za(@EFX;-2XaexEIFL)@ zS<6Yy$C#BYawHA<*Jucr_*$8{r&R%|6n~^PVI>L^3IPf({f?%3MuNF{=#2O6ye}OP zg9D8L^j7+0!53ZDfMTWJ9eyxQ0Ney^Wt{3<-pi_M!hSC2T=ceJAxI9!6K87VzT|4F zAM7*R+|AP^#ub3Mo}vb#mYVN_>cQMU@1|YH!Io+Z3l>bj_rRV7{JU!3!AjVxmw$BS zJ$?F`1@&1r2&lO+s7v2stT&iaP~1j34%8rKqw#8zU~VxBB7z<;lBxRcWNxn^F|*en z&;r&5_nDKBolBLyspJ>4%>JpWB+mf34j>);Ef4$|*?g5S&AVbn z6Da|yB#I0KvI=XwtDub~R;tAaG*bEp`kX%CM8d^&T$sm<5;K70^-<}X?ICBEaKLT4c zcarBuw<>6G?Ya%qCVA<%E#J3`a~Q@>601goquCT_4Mk|R1e(nV&)z2)N)$bJWf1|*G%GlX|)z`A+pFZeOg z&K}GTq?d|Ris-*Nmi|}(?(5(`Ge%H^JCLPa--gEP^#^fX`tEY>I*>q;K zGf4nh?LP)L$gG1Ex|0=*|BH&>bVj#jkZ{6U`fdI=YG zA9kO%k~$7y#J222^Yp(x~OYXd!lTjw;)EFg| z3v||hHdP0C`D8t9B7Yuh@lw^Np3~)I`$EF42 z4_=iT2G9EbalotRHw(Ia8G>^5pRfx{=;$TDM(#TX*NAYu+d8EK&uNxbsRNXU#jQcC4i zSGK`)cxDbvkjhR$NfTr^Py;y$id*{J?TK74#4$&+8Kc#T&>BwgNB{P6T(o(#(gull z{-1ks=wugpCXr_fSymv;H1b>pepbdrK`B>HfFuPjb$=T(%tQw%zU-iBfC(Gro@~=N zBWV;g<>|A@kZmLb(o8WY4H29nNr+*$S}}%)BMc2kxNP$fe(IJD*u8#eS>xQz6~6f3 zG(LFy6z1Cn78eS%+XcE^i7ZnnjPZ3<@>|}Ide=(0=6SI1Xl2`GdMvO91T^tp8)#jZ z%d7G+Z-3k8>*4sIAfs|=`m(URH%R18g&>$e<(F!gt=a!(8S7 zlS@VYmrE46gw_OzlbEB`itr~tafJi+mO81#+y3C&*nhl(_F|4S&5>scvQVbo%Jnki z41xhkED#IgOKC2lB&qZLi9>lO2lJeT+1yBFeSgZG;E-y@T4`xM(_D=>9kMuMD5OS~ zOGqW@5yo6S;SNDm7Y!9iWffdx{7~w^d_PAa(_Jo=T`0o|8Se5c16P)+wlr2R8{DzX zf|heV088#PSHnbD&xgwQIxtkwh8Hqq??epV@KtH+au7+YT=cul@+ z@Q9NttRc{7#mlIBJ-z6vO}Kc=IDYzrcYmTIa>#;gKaxcBfGYrKH6mQMYZ50HGN&Ho z)-EU!SU1+d6rSZT1@bkBB zElI1EqGrtT%4e;{+OZh#`|J_d?`~!?2`Oz{uIjw@)NA?x=jg!gegnS@I1AdtIH^cc z0b76r-F9A7L7oF>=736v4gy%5F@G?jfI>kl6H>&gpaYW%1|1}vHWD3ZKnwGJuSOt8 z4C_(mj3=rCQ-+wYdISmJm zw%?b%@c`G6IYiKKkN}4yVK&LU)V5yUFrL5}Nq?;bPMNi>lpRNtlM=dTYl{RIu)51| zQiZ4X5VgA+`l*5P<~oq`E{j63xUGx*-_m9G2N^xrDtM^0upGB%_0I+jzW#mH_f|nz z@BKbSO~3Z_VO~8<%QI-kd4D;vtfMMdK9fFO;&xLvAD1W8UDpx4zYd_3eX`&tXjST^ zo$7{8M}?8H+Gk4=F#9?DotM?YApi@(S5O5+f*}?*n5Ck)Ff5b;lpExWuQs%9Ju!rR z7KUiBzg9Qt{DXbzrB1Ab@W@2qmkw^u`fLm1;%?(B`uhJQA%8pgl5WhXv( z+g@au1Y@KQ>0}bEnzGx4LZcBw2m)hq%<=BmUW)DON3eNyS)%g6uN{JjI7C!HL3gn4~f)48Px!F)m5Fjg&Sa!{R9Bh-22b4GXEHdKDUybBLI1 zLKxFvTo@o=Z4`|Wv4129iBkTwZ@tZ!0o_~>*y9Kcg-tu56&OhRA*Ckc@<;&%C}aYs zvF9e-L}cyk8e|VQJRGeET!nP~t}*<=%Yone%n|2dXaTH{UJK%)>f4^KSt53gkvE$? zaGCE$r3(!wU9mQD1Rnibh0(q!X~Ks{@106@V5M*r)>|?%c7Jyy@#NrKL8vg?0VsL6 zU~WIN-maD{Xsw;pMJetMpF)svdZQsQG(_O`*M4XhcB~u1rd7>SKm7SOj-%TxP~_AP zc1`x3dzo}jC?cZpJPZH?%zXCsj3b65GTx)cMl$0BhMCePRgWR=`Eq~AlAYuVwz@DAsrU2?Usi2f3dop9=DGLUrjoMi$H=eYFjd!F)+paRM zUI7C$F;>WUSV41Ul3=so-jFHy)Ah>8>x`X5V-SDtU(Dc(ZlAX&IS+oEcStCHEq$mv z#aG{Hp6_|qd<#~zJ6ZGvbbTZQwQUUUr6Ue3ve%V6>VMx=SKe|Nv|s3TK%u^@rOWOo z^|DVhMXDJaU^34YdBDJKIzjE2|1I2<+`U1KtUVCbL6=$(nK(-Jnu<7>@#t?Hb?f9O$N^W z=o61jL4PTYX2h{`qJ_)Xjnv+E?XK1M>#rXKK=UbzIlgrNQM~fHEv5VJ-#?89r`kvo z0(U}iB#j6+Ube2b+_CWn0YM{C$}^2ZN@8jjxM)qeiA|^mrGPjw#{mrrovq0pMJo^X zZ67eJDvC%g9VaAB6Oq6dA2@+mUAv)Fr~CHL;eWoPZDSgs5JdvgfTbw$Hg4STMlDGy zBDIE)hKWe)!EJ0{1UF2X45CFTWP-P~WExbKR6wS|G5}12D^S}kQ!`*QPRQl5 z>c&8Dl@A@+V>AP2M&@<2H_+u(6Z%d130BZp@=~%1qXI)$b-n0Lq_J2iNeo7s;s=Q zs!pq(LNHHYoP10gD9fJ}Nm!&Lb+xW^1)42^p<#j1(F8YMvZ}T}N5>LGF-Mk? z`i@5gu)g@fNxbUX_2s#@Zx;6+SqwsLaDRhyNRq{k?GulT-7E)^m;?d2RA5mKk#iKe zBGaJ4OB^}ZMv80t$ao%d3zmaJoK>SrCF$T$CGCsP6E(lp5i9jg`KA5q)1NByqISA5 zH$UksHw=+E)fgB3C0I|)b}5{K*0}%VBIYuQ8@7!1+_!0R2yrY-AW^cz`qgCs}}G zJRS?FpiNjNZq#J43B3_T9C2imE>nMG=DEC}`q)6S&;U2U&H+6UfPXuffV&2q$wERY z82c-MW{YEZIKjwhe>ME*XaXS^I)c>SoRRI;-`{%@hvstZTH6FPaBMckXYW60fIZn! z%2+#z6&KXTD6&C*NrD+iWaF3R3UR{81Gp=Z7XmVuWRJxR2#ToQabn`6Srw`?{Wm8o+sR>w#fzV$+aeISndScGvlevysTH;asAI=K?(`Y zdhaoH@_}2+*Mp9z8LOqnxsF0`Pi=O_!L`z>$}>Hc3coIWkDH$M{eY9S)V|sE9euxZ zYM~Zj0c4;n1b>5O!~nS9xcAsR9z59wz)%zlQOu!~AZZhTq#0poIO+TT(Xj>rClfxQ z$Q7(c31;t7N?V&*CrMG-q=K=GSd;2VnwUWv7Rd7e4EW#TM4-_SND_|wrrLP$R2Kk{ zWr`#N5ixuQ4lX33hB20pykySKCmY%!&or`3Ax#TNVSj>zGGah+LXy0O37HTDVH51( zL79NAS*jsYX4GiX?CBD+pum$9mVrP-!x*@4m~7xhmrd68@$vZ_fAozhbUPAxPKWzA z=J@0TGib#e&)eQBwQR;5FS&FKA6du&O@K@*17;!uG~`HSrW&ixLmG!dY81HzMuLD& z#tGDeB!4n-L^gd%!`SLY##ti(SVckLHA~6pKF^IR8JhYxGWLdMOk)GMIH&oN=M?8F z%_IRONrwss(3lDvkk{B385I~grkVF=)PLl-0YnkdY(^L!i7+zKA7G7)Chibh7^zKU zq^b8!b@0&X4zvc+v@qdS3`k6DZZ>1bm@qPEPk*=pS~LbUHX2zb(M<*YZ4}5;i7YRm z3X-}B!CXANWAWL(k-2z2!W5XF90SysRS&c@7BoPK6 zb7(CIT$zwBUGALf2`bR0q{~%j0$KQgi&jswIJQU)=6!iYC04AU?{9s3Bp&v7Zo4Oa|1Y7 zaDOi8L~5(zPQ`)b3kYMo*gDuXVx=AaaDU=mi|Jlr7%c<2{@2=kh1fc{Vq4LlSkHZ> zs@emK-7k88(sBo&4v5(((PkZKAk0@;m#QlyD`D5BzgPD$h@WX^4y0<(ru=8`xUTlz zfAhgR!HhcMgYUR@V2ghD)fc^Z)OpMLoTwfDa15AP&~2Vlo!6TkD;D}Q?K z`M2-C7pE5sP-qB_kN>CM_jfXhpZe>E5yt}Wf9s{S?|RE0-w&-KL_$GnI%7wXz^zwK z;;L<-}&SVadkRdcjvl-!{4K2Ll>Q&gbrd0}? zaAYRM>G>QF9bUx8?>>#FZKPuw(0^J&n-nJ695R^+!$I~u951?LtgrOy@9&#Nr!BF# zNO8>o0$56E{PV-JxMuSZ8d2}Fmu?zDt2IL^;f$mp|L`-t{q-leAIGtU9JlNq#f9ry z*f`+<_4Hzad-gBj)Avo|@#9^jnIf;uoI*edLG^DmI4)Y>!Yi+uz_vBba(~}Ur#Q8c zr%{h-sAsCuXfe-)qWwrfo z>Gxi>!+rkry(jR|yG|gA7=J$Swo7X7f5RW%jW`idN+A*n7}rkfdeMd!Zn{#}{zmL>pgy_yoSYcNS^4K$Z#uvx-1nqrvg{U%91s48Obw48Tnntj6WR z0c(08#iNI3@sY3X$0LVkk);K+QU(vvE*T{p&1QlheD-EswPO|5jDIz;dm~9kJ6VB4 zCl)X@y@I`O!pB}; zH(2sTV<(jcGsdb}E=>?i53T_8NWRM8%SeYUFhwZ&VsL4L%(W=+K(lpZ%1eCeyd52Y zuM9+Q-&E&A<-2uFUWNq9|7OZ4O%GPN4v;k5ngm#f2-`PH9Dg!ECu44+l&>9%@zNcW zwf8-6Xx8s1j86UiD2@fV(oO}uToMsUle)P?Gwv0;UAk=)hh|e~0MEO)-rnT}m#xNa zkIw)Ap0lmjOA7$@OtsNyM$QJXj*^BjhXLBVCx>GE_gC-0rpac{y{$yx!i~eYaN{s; zx^xweOsDwQhks@Xm_!UoGs4D+1V8@5jd<<__0qvj6Af&dXyA&iBe?nE34HJ?NAZm( z=8gS|hBp7KO2yiMMMl!LV@+?p0FqukbhM3jyD)D5B*97=#3N3|9CsgX*GjQ2+c<<~ zlPqD9xb6^4^xWN}c-E%+a1fKj5pKC`0ykVZhJU*I6n{Q`&ot7Mq*){dVpu<(;GH+E z#r3=E)s>qj8`w12z?EA^@PbRm@qw=#$DR8Zk!9qaCL)GLvwkeE-!+P>HASXo-%4|lE`z;v3|0NUwhND zuzB@x&-1M$!iAeBaN*_&+;qie9GsfR!4r$1MA3!OVAy|vr7)qfl+kq5%(!y!G}`Eu z$wlOB2h7nr1W{K1S*Kzt122Ca{xS^vF}bHWm}Zb#f$YV6*xgVnVws3jJ2E)2wr@|V zbs-uo)u+r;s-VGMJj0WFkJ#CQtSS%-r44mpN|!&gx_c^hap1SEFRJwpB{+3bhUHRO za#Mcixu<_nT1M~kUP4bb(dJXXNGg;NgFHT(@JQ=lZ4F#xQqa9$EvtHq;yA zU$AKecc1J+D~*db)!*~@$&QJjJqTb$6lOwcjJG1Z=LdFRa(H>+E*?ISlHC~t;zVHM zM1o&_^>!ygS&BAIHt_SW+=l=DvAwu&-y*VHBhNLM&_0bD3v3w$$C^GWst1m?k){-n zsndUv=ypkhC6zD|7=?$Ab!q_?0PI+mV9!Yn73seH)el^S)QmaaaQ#}G?kap^-vaW2 zq(`eqBK+dZHkG7aOZCmWUbzLo@{b4c#1xG)=M2qOJ#eUkD}eegNsK-88P3t&>xS^| zS8l~G|I0xrr4bDPN_7-QbMHqdql?eRwD=xviKYAZdnesG%)guXh>qoA^w=Ctc%tdQB!(yrIKT?|%k__yml;)o?8kCa4=^KBk znCi2qG6rKWAdHbGrG=n>l%I>d5lHeStd|1w35R`RSQ|Le{-sUbN7JoHlqz7X7Gw3L zD)8~3)%_lnwY1c%T7hb1bm=zhT3x2)a7Wg+*d?DU{q@ZIsRdbO&%dWyYG&Ql?Y|yL zZ168!6ZBV=)^}`qrVYH91CY35eXlhRd8xJ3W_AvgF6ATR}6sK!wc|f*~CPx~0$(4T_Ff@{&H58-O zit&Tb+0qwWO)Zq?)#Hbzak^8Grh&FE(m;gMDquuW8BC$)uF!ZG@NlcT4c18wyvEKT zJ9mpNmFa`Bfz%>Q0FpLC8K@+wEL8q7AT+2B)I>l~W>6p72B(r_*3gvKv?FXQ3sin} zR0SB7ehoU_t3+%*rI3I6NwMm`){?EKl|~{o>01hc1gf27Q6TvU=F9Ry)l#5u@byq) zW>w8gxAE*K44FXhUHW}qW#>nNbbHqRQTp;-7I?BrRGfn`8~jcq53(sZfXTfi%o6Q^ zRy7hhp18GP4o#+BVE{^R2g#s$0j`?H5n7r{ z3k;ilX(FOHKuev#IRgp+&>DYs$9^;#5#IXj&9(Rb?LEiP?Mmcnjw3T&NU8A6{j>PN zXKm=YcjxLBhE8^{rYSJi$1`!=NQ`xpO)TaT8^(G!{{5%BSj^414`6a}Vw{DP#zh7eT)wV_hYl?wNw|@2a9q807|+?+tNJ?CmH5n|MNDT3lL^PI zTZXZ^0upwwAHsFphjIJE1sNi91#j;PSo4WN?N~^Sp|MF~U6`;7!mNQpYRq;ANIZl1 zQiH;M0Ki--@#v`(&4}ZoRSh(1q&v-s>PhjaP8J!wbH4s#Agq;aXM3& zj5%)IGSt&IyVf>w)utglG}Q&?1WJ}owhKAK?fVz;!b`e1x{zc4T#mgRiAICMD2y~X zZeH8Og=4*-Q%s zj^}J0#pQoB0Z9Si@sn+Q?Z7NLxyDO(PvF8ez4LU}x?$XO!6d%3e-2y#jmF>%fAg6{ zS}3d;sy|R%x@8Ri`sfMdIq}|0Hjmfd_qPup$G+2Tv==j6KH0(*>ql_k9_t~=zy!c_ zcvvXoBF31_ML3ALg{lJk_sp2r(%{SbJQ@bTC@6mz;5{Y6`{{4FepSrlH*5q9pE*Wj zRVo+lT!)*kyAW4jycrj4TZ2t&$1&7OFgD!8++r7toeW2&X7Tv`6S()$Blz0gd-3Sr zsXkJ!DlHd?)qvd6qxM>Fd9v9+K0JhCsD+}DK*cdM=g@+KNd=}9L{T8lGDMve@xmf_ zHyeK}EgJ}|dZnAScdt5k!wKdVQ!I9J z967Oo#}A&yy^kHo*X})tNB5oX``&u{xpPb50X&N%EQ|~zjbr3V3>8N`{m=6PQJNv@ zrid3h5NTHKgsRjOVbEE)#KB5wNJdgH>#Be4>qIe$n3>})h#vD2H(PfwzcIY{`t5k# z_g#d`cdf>n$ssh8sN`Uxv__g0n3`_mfhSMm<6nFXpa0HYQaft9w!IZuHN*tqFh2SN zF#DU4t=At1S4>;Rnt01Kn=uv%eCEO9&{~_Io&6b_lRzqsI}grdcsRye``ml)(FK3Z z&!uR$bMlho45wL+V{>T_Kw4)`;a9G$mrPl@WL*n;XETh|Fx@9lc3i&?B8qjTUA)3N zdhW&{v@CL5$VsqwiZZMsQhx$eg?wcz&xA6FMM)o>OsOlb_>f+A*3z%NWF}qlh z3eGV5Ke%HGLqid++1$b{TZgcHoWSAg0ibQis-_EFasP=fS_33#_a5tDVV-}0xRj(; z95iNeEa>bAjmtLIt8Nd>bn%z>OgTI6zq)4%KmP0u*gDZG>3a6gN!)*;4QLFMxE-EP z@yW+eppzzF%2Wg@COJ3u=+1n=1zYZPX(0+$)AihN-9Vbik|KX5TXHL;faVRW0D7+W`v<1OERIezHH7i0T|`qKjdj14z1Hr&9* zH6yt0(hYdi%gEDZ|It}|?2C`!!=HN)hmX(oNLimsVhoURgwE=5bjC)INBvJzVgDCH ze$$}-pGRY6KIs3_ljwg3V9V=5hZm@e?IA*jhmkP06~}Wf--uuQvFG8si`To{js4mx z7{gFA#*U5S*s*aOuey0R3aN0{qsQ@EfAKAR=b@t|J1@JYLvKiT!08zyBfSXLw6++l z)E9&4n@47$q{et7!q)L7#`>IaUv=dMOwDz1=fOFXFRy>wwT6F-HAD$(`)}%*%|)1! znpYTU$$basu;KEuL2n`$){VqiKOpP_0BjsiQ1sc8zjJUNQqn%jYnZ>KP^vrKF0ixa zo}FU}c3!>;hvqUoaIB5bKQ@cF&~91BvB2gU)nLLI-oCS5Dp95FYnn8s4B(6dAW5w@ zm9rs0`q8?P*x7$+MS?*_CWxaA?#ekXTHW7%=Gc5r^Kc13`Y%t+W2RG}$Q8gCo;;P} ztNR!6(p|j(Vcjq#qh4QQH%5I^4=Sp(Wuif#ld*wgdEc=PKKPxJSeP%+=@ia@JOYLK zxM}+^UVh0$-@vQ=h?$__*3_pT6}fU@CX`8@Ip}^0E=qsbFIZPEJ-zGj0)^Z#9@$JV z+*sKY1E6M&sW-K5g4lWs#W;nf&VrNZo;+^9y z?7X^#gR>pne`p5(d~fQ)n}{foV!&cc90Ld?X7-)l&ZS54 z6`W#VvU7ji0?qbf#Lo;nwyeT`e#cAjnipL?kg+U9+c!?)|9kuQ;b-3Z0(|O=58(Iy z@+;VT=(Ks8XAouZSkuQP9$E&1<(ue6*+|e{zZU7l*ja&InZ#(XTaEVGRcOr4W9axP zh`b1})6%D7Pvv{9goKK*DklKo*s*yMKmXS2@w$KSyXY+Ye;oh$tJe$uB>K z|Mih?a(y+ zn?R7-M@HXsqDuiQE3{@LcFCZ#+~-eiG`I=2%CKuq|2iI?%UupV@~Et*y)(H9vP$3; z;JD{_w-#WHCgl0JrjKFza;X*j7=HEHX^Fn@#5~fjbcw5#QV zL7PbRh3r3Utl`|mV)1iM9r~dtAV|)M48p~@<7Ay*Yh$H;xfBXIT%3u5( ze(0swoE38qDH0q%^s=k)l|TRY_{D#F3tFw1R1chkGY-LpGqh*c;GXe{5pkc!gpwo><)jhgT|agMzV?5oKY};D z_>yzl|8IElCHT_+{So}!k6e$WA(pRlI0Mp*p}lSuW-i=@?!@Rh?*CEDT)55jzYoz+ z{@bhC=nEo)HAD$WIYvjD_|)&d9v}bB*PJ!Ds?xR%WBBlUUx~l}t=C{|IB`btHu^X> z0W!lJYl4@fPFoL2&IRQZ<79vM&W$4qFu2P-z#(UWyN=D{8;53V@7=L_h~6n|Xoz~! zHuso|;@ux$X;9EmWt@A8f>gK<9c^Q#-3y#A8BLH>m_%NY2292RYiiUxPn>9z^FuCC z6qY&ls~GKtg-I{-se4bLJD?o^Fy4yr<2S6wCF`0dD*4&3Rjpxyry75IKlc|<5+=8s z#;Jw+L&kMmhtO>LT!q6U5k`h1%AYqR&}<4^)JNrdY%WKhYu8tUq%Iab*pxO(Y0PH> znDjZ?25dz3L0i_r=@e;KAoX1|J2TH>+xsreJifK zVB?_2bxkfjGcrg%K|V~YO`!4 znA^4$MeEExFqTUMAXXzA8^P#-qY!Cc;ql>EA-vE-p*l)yk{Z7Mzuk%}cGXK1&IKj0 zz)!#N*?94DcHk#}<1={tz^QXqwoGEoZ`**PxjYx%m5>E++1M~f4;+WcLL046^=j@9 z9}WdRC9SQ7<_v$|cindU)q7rnX0rUHz7o3rvJLp|U%UhE8Sb~!&9pq+H^!dnqy;oT?7Qvx$0JGJe`N)dBTa~<*vRC0s z1A_LPXye-LWi|NvI=iZNj!Q<$C;hE8Qm*eFm?zJ~6DQh$V9=TlVmoWpg8cMBug0+m3HMGKDDO#<9p`E@2YRVF@RT{6^wcrOkS^c79-sN+cjDi@_Y=77J5M46SM=A1 zhH!uO5dtQKhEr&|=hBg3%xv2V&CiX*XDKS04a{7y4WkE+B3Wn$SE~I#$nJx#YsT=x z=WNHH{KCsHdKPZAXF`|lT!T;l?;plb{>G>Ag>UaW>+-UZAvaGv{r3q}tdN3yU8 z0KsCds?Gx`T_~0g`u}I&ay|ar+n#&g?9+dmNrb<7@2l|JfAwwr&yU;**aL;L!_uz0 zrX^0?PwgYoGc(eqa1$S7KSL5T%4l!zy<~O&m^gOhUrL%G4HE^_Ko#NU@dg&>GiPwD zBr$SXXgqv$p$A~a70z@zlQ_803$Us*(<$)a5eiNz6)_N543=PNBURHH;6mf@Y>s~q z-+vmP-@l0KHV@(1>xVF!^v>@~)=^$VrO1Y9d&Leb;SAq6k>b!o?$o2Q(8vo)chYGW zSXd}9Kc8cEHaDqVyiKjr8cg{F##yfLnFnX_=I5=gjplyy&JjFvBE>@%kZ4NQy=FAV zt(W#^h+lhh0a>~{yP?b1HgMlDZ}fjGB8CfB)sM-+`5fI;VyazWOC^V2!Wq7K()Nwd z?dVe7q!MXYA?->R$(=C`6%POo1%+ynMy1A#OyYv|^^&{K9d2VLS1!#?KeCc51`L$a zZW>Flrz;V~EY zrF)X*zP`74shOhqno@Ecp6%jq?>U0c?>miWZyCq4H;!YpCJ5_QJ60Qy*gzY_wJ~&O z2(wTORuMjB#>15pWMF>b4KoLODb$xovrdZ$uYTEe_?zGS(ennbER7B|@aOM+BVPG} zOML*!z=*SCBU1%l@M(h5@o|65Y~Oa?n7bv-Ip(%+LOR~hNVC6<3^Niq2!U6;@FINZ zmtJw+z?G%Zp#&fL)gQpCUwF}3m6MK-U~c=yr>Xxp1pRMMNJa{ZrPQC4XYbek-3#&V zA3cBI%DtTdzwo2i<5zzCMkr`VCF!4G3{v_Sc~-)rv{g}1gmrBa`DuS8mvw4&>c)s; ztQp}&J0@{?jnOIqJbYx167}YTrBbp`PI8qS=Gc#3efe5EXWJNVx?lpk41-WglQY19 zdR1jehvqXpcDg=pR!C1ywUK5%mz_--+>eyT?wkC#-K{De=OsIPz9D>o0}>WRc8&-QjYMXs=8EXLLAn-~_%_oY%a&Qe1w=JWGq z3TaoN)0Oz*Lo>DSYD66W;l{Oi{Z$jVV0{Z4RyFX7OULowZdqSzXbu41*}H%zj(5>b zB{BnY1_7)eyl4zpt#6^xq?lPR-#voo_X%Elcs4_OvA~|w^^$+mS8QtGs`1!K?I_+I z1zX)V665mK4Kz7($(!xpenbG45)0e7lK}dr7P3-ADS_(-1VFWt#=@v+`_Zc|nZR{h zhVh)OBiKGk_E3Xtp-7S>k!2E(Pql0BdG6LxT(N%0BoOD=y{d)hZmXBbJ$`%^u9ZCF=&(fGf^%^YxeDkKg@9B+=O!Ag+|+NZ|kc zx7Xm*OdDUjdq1f{G{8WSp`GZIS<$iezhZ!9NQZ|pvt@tNK=rAGvlaj6XJ1Si(w_!OB7y(=i{Fpwxh`(M`@k7LpAWY%zh(WoGqN~SVhrDgGV1@4NlK#&hhWwa2@{L4__ha_}!QMe?G^ax* zn=2?t1~7k^6kME}z^u&JH0gnx>f5f^;0`WZCkBT-hi@Ii6UPsb?NcUkVlKnp6K(A56I2uc4$r1oSjh0?bQik^ z1Y>;Y@B-4bK$}AkpMVQ&QuGoujz*$~Awu^-AE8<82&YEO5Llalz^aR@cPi znrRnEyAnzPpMPWqH|-qlVdjZoc)_M2Ja>HyQ;UT$BhlD4;SaTcQXIzKqg`Xy1QQ^a z5nxsfvHkRK8#Hh^#|h@T`-0hU9hwrVK-O!;MY%}(=lVnDWL8k zo3($2V0hzY$V4hR6VbZlUmn$L2BDmH5JA^SFNV5Sr28zOn0eTL5-G_|;?h z+`}0F0>V+&f4|HFNtluvoYT7K=BgHCy?pa9o}A4vmT+7$Ao_lhdk2n!0sBsMv14`b z9K2|4%h|bo?txSI)PvIljmFYcnlwNfpM8Je6rO* z)6Vgk`=`+D6m-Z`1NtdEbPTfFR32R3aKUQa`mD{k^;w(o@X5YgFm}Dr9kl(_6PZec;LxW0>2v5wa1UenMST<#q}I zjvd=q;RC<$vZoDPSxO>-KY!1wuzPELzPElPlNfW`Ha>me$`WIk+qMBRNqQv7J%Lm; zU?o>Cc+O7z>W|%UzH3`c?|J8q_`ZMZwwZ4hAod=dwE2%_FeiQrAek2hMY7N67kB26V8 zIWj-+{yX-}Vs0+Oq3OX=tj|4g3f&GF@uq3v!b9|!^kV<9S&F*3!tZ_dFpiwc&}kRwro?m$NmA3LXzg&+7hD0r zS00WEC%=CY~*Y?e}@uUQ<0AS5w#dk+bz)T6lk{#96O!jpYJ~2_udQF zwEBW80Ql5*j^OC24i*>GDzjWgmUUSxOQVbkiY$bBcNfg*vxkz7Ri=cvZDgb7-ZiPNaUUp|oT5!y7 z-2m7K;mjMcSMi7D4Do+Zft{BJYD!N=#P5IlF)YldXfI}Ho6Wi(rQHH~X24xnqT9{!$?tz0Mt6W$89*mmt5zgi zq#Sqeo#}i3!$%h|GtI#lipv>2mXR2Y|%PND+nv!v!1q8?{&I z$aIQN-gycO3pwWJbIi|W_~>^|;$QALbLWxEHV+&7E0ge916snVex)MG42`kE;$n_N zC%Smo-|xqhQ@wvFV3w|XhF|*R0ethx1uQP)=ya5ePi9q_XG7oFGmpRc`bo^pj&{qcOA#Vd~N`L zhW3DU+wBkl>vRfq2kaRH#LU{**x!b)N{3G^;P3C)i*C0tp1gsBjngi8Ekj>UQre_f zgsiHnz?w47xY#P^u#zhVEn@tqAA1R|+P(fv3w=uI$_qB&XWw>n;5k*_FIofbb?cr| zZ^4yN(QJR9yKc1!Jpmtf0zTIx1Or5bpLz53xN=ATcp^^+UAcQLe)cWbW1zg)P-pGr zQ|c|a5-OSvEUX##@?X1<9g#u1iUt1qmu^L~#whdYq-GM~uYToL^zH$H{UHFrro%FJ zW=4dc=Mq^uc(d$B-Av-!kDtK*{HKTTKR)pgW@mpon4j-rVZMvSg$xUG{qxs#Iyt&2 zNs3bQ{v#(lc;6=<#`Hp6geoE>t>lZCVYgG@+fU5kbf0JT99zW9bc&hj6yJSv2Gfi6 z?YwW_EEd}tI^DtntF&97)9KIT+HGQ|q2)2|%G|NQJh+<&lMYEq?6DskVwdE}WkjL3&caPIjAc;%T!+LdT8O3cp} zI55@0&;Q*4eDs?qaAdlFe_J{-li{P^I)VTA;k|fZe;f021s2-{I^6q#^u_Eoz-0DZ|c7e`fj`m`K&O(O8`3xWa`VqYA!w=)zPYed5-AsSt zTaTZ{yFdC6{`&Sqn43$nu#jSLA;;okj)ej1Z*eh4yG;kE#R2!V+Zj6D97BTPjt7qp ztPcQ8FQoX#Z|%b`e&{L4>@%v zQRT3~0Ie06W+dH}5=Ft0r3E_e48QR=-$mSraLLvQ6UQo$>=_;7VmHUpnJx~UZe!0> z8(CJ65p`N1%L-_z!8j$lj*|kPxP1?K0~r$qQe!E!7c->Y0YtJJW^M z8k}={`p%;mZN}a_Rg;~_KYsf-7Uy$hxq^+KNa|GJV_!RLjE=dnaRZ<=78l8j?ZNpR zzjAmlM6@3-x@3a9<2DSrzI$S-gSocET?ZFQN|JdadZkGHA4ME#%JF~Md#7>RBXd|g zp5V$&E$m*`^nAj!>9M07oSx6|^(Pk4=@iJ!NngrxqH=08g={DS;f;-(m1i1%amNXK z@x)FQXaIXoq&Rpw#give0xCwbm!-yNTr)(mLR|1Aqm}=^d#15I zV%RkvLz;-?N^0DFU=e?JALERv34xNm77i9zzQ{d z-%QUJ_}0EfGf${L1ZOB>jZb{zI5@ZN|2|AeyHmJ0Sc(G8yYavM(K&qgz#^{SIgHJ# z5^NZ6fH7e2$rMNDa~zt>@tiF~*mJB6SW}gP=6SbGYFW;JIAVXuQiX3lK9BG2dknW; zK7kDriPa}TYv9;)if`^AX(|}-kKaB{W<89#!=I8Gopw&%uEua)WDWTGbv`<8E$`U#;Dgx%}0_V2|zP~}&x0sLP;BX+ z88dFqv~k)vDdh!GdVmI12&hIAfBK%c;D?@n$ujG9{^@@cw>^Y^|Lgw%rWLp#cLRzC zL;X6xeJj$*iL-jgEgOdMQ#bFx#hb@)m60UvIW~topFD+6+D8vGK%p>KmSs^?uH#_RsW}wKJn$p@KgWeGsF#Rq*?P@*CQQYUh0p2^i=l$ z$U+-yr%rz%E68R-nNx}u9I}z%-Vgi;wys&e8t8n}!Kry%_x8VW;2h8tbk|5mHOTPU zC1B?iDLIY>l179^Ge)x&quGp+Gz6kJqBu0hep8!trW7C&Ccct#ZrkLAMK^KI!6Vvl zqF5k`g-cT+tw&d`k*5Wu*?+j8XnYJDC|%B{i~KBQ+AdEY(J>Wy{pgd(@H( zKr4S3q6moN2uZ@IzZ(Kc%n-*mSvQ<(yj3L^rhn2*Aid|++k08M zi2o+0RUru&5Qt?+V)9^&1P5gh&?Mzb4QPMN6qHtAp!?&PBWZ9n5`j43h$4o_yw}Cg zv-md%r0V9X@uuYrNFrwDGy@Y1al}e(unrRx*}$$-n_tqZ$H^gu$}XTJ#j@ng)Gekt z)JQm*NklmfVVz1;u#Wt{qM)!O3WZK%P@xMGAgQ_eBu}A$DOZ4ZzK_0(s^o+F42xtRgo!#T=x-G??ZP95kQ%ZHS>N z>&!d|ErO~shORrf_FN2%!25U?I>{Ad&{2%-J2&CAH(k8U`YlagfA|>w_L~RrNB2#Y zepi3+suh>{n(w<5@B8zw;^1M=WVL@LHYpnk(uw8kf$Qk~ue=EFd`WL;f?XTNuxrB@ z-f+`SyzY*@_~DN|xT5kqqa(4M8 z^=900&k+DN)=*%)9~``FYAhuc3dTSI{79XY=Mr&Om^eJ#1tzxU4?eJ_a#E8bFHjUV zPZ)#X7QiteEg*y_0iVKnYuVHwS`#D5a{>)OQ7EW_>?*+k!O5^Y z&p3pTV1mG)qjr;AVISU z78&$gc%O}SUKBtfrBSKTv7cuOS)>qU3~?k7MaqFI`wzy6hr&A$NX>HP`cqj$cek%o z8>#&o05^wD2`M@99LO?dfSmM^|BWpu9KZrOLlg={P7VgrSRUJFmJ@%iyuDapej&%g zd_k(Mt_|m5#?~5`7dD*^5$6n9t`VgQacmg5fD1m$m=F3&Dp9IqVbn`@^o3x^BZVw8 zAc+A*p^Zeb9F3ka4JnzKa~fHu4Y;BM2Vv*XImUavDXH9Cl~O?~KyW|`2F4^gSQ+4G z0hE=%DN|wZ6-?_1Oap)BV596hkjmI60gOq?auP|zDMJwp6b%I-NDGn|()6=(AWi1d z0A(8lmEw9y$sr39i;ICYDcXcqk~sf#f8@Bo}D z+a8lSAd80E)9P+%&k_$JRk&AlHhHx zd^W`3u(Hdd&)szhzx}U|Z!V`RxQ;51L>nbbUEH| z)6OODd&5mTG1iK4>tEfoqW3J0k6>i#lo6kDXbvbY@RpZcdQSQuck?v8)9&Yq<{HGp1q>-LV7CazNL5n*!6hD&wVnO z{(-H44swn%iit%if+Rs&`M6A6P?`!Wy|RPnJQS6#Ff<>FPB1`n0mc+qZdEa|ELk#Y z8w&`ui9^P74K6gINcxjLeC#eM;o>{l&6aZxDT!$c!J&VGx&mQhY|E?|V4{cvhB3SN zVQ>r!0GQ^`+AyR{g9#S+{TP*v)R5MFoO5ulN{nA??)pp`MrLD`X=U@h8rw^$P~-xc z&_RkL0(Ft?Kc$gNWk7_jw=!PRw%tbh>T*${4cL2F47&uqK```eUHt#EJ|45j4 zYaoVi`pJKJY0EM&s?y?OfyD&^S?xsv(|M+x)W-%=B>)!yEXKeKjY2SFc^Q}xqt#|C z8MN_`wUQuKoV|jf4wOjDJhiCBfU)p!Z@9K*y*RiAtR30J#WVfYwziN zjKS-^?_#|719y;gHke=O#LA^t=d=IYBSU`}#wqH1ryh@S&CZoO7M!oS4*<`)aIFb+ z>=~;k=Jp3|7>;%fNEwj94Z~%ysZ0V6Kw_cL7DU07VWmEr*^QYbV{}$yAb%g)l$GW| zaA2wjQqLgSKFgz!hV}BpKt7(j-E5fW@l_ZNJOHfJ0Y*Q)}jd zwv|E+3O>2GXw-v?(x?c@hDcf4F-do5a@i=*Tx02mk~ z2c%?>1?i}q>P*?T82|wWrW6#TSaH0dMCZ^HBg-y|ssxMbp#o_XgJ2pEG?k?>2a?bx z;y{r4Oet4i3v7a!Y_NrPhXQB~?T!>MDn1S_tmKh{bLz{ykmf9~hkBmC*T``v4{9zV*gk`0O2fU{!x&mfU%xB;oPK z(2SFf7LzvBl=4MbiM9b)t~_l4no;vHMgT(-h_R|OVhu0Or|}Csgq$dz&WXLIb*Ih7GUYpKkd)ix_7=h zP;JJFnRnQr%pqVQCTNYoZSYd7{v+_lI0$4)uP)9D3W?B<+HHwWN21#y&%P{EChB}3 z5e+`W_6;{e3uWhqmFlpPG{Z`GeE&Km2xv+b<3Nx};ZhVDg#mvYb{^Zc!OXZof!=H4 zQn^$zb=yKXuVDZR2Z1t4^D{U0W%ecyrou264lUb){YPfi@dkXDN>fG(iHI|#T0uvI zn2SQAkc9(N3d#Ys5S#(jM+`Pq5QCNeQH?yfA)8G4A2Vx50bs(+PZwT+`b3*OB^)0> z8PIMdWZ-5DCA5FZIjG(H4Mx#MO>gG!vI71rtr@fcs3MYd9gh0Jb{FAJZ1#P+RAzV# zpdEYb88ZFPprZ&kUAcKh$=ZuZGQzfYOIC_S{6RTe5PFVmS)|PmXW#4I zsmuQ)F-m`F)C;~1hKU+gnzZ&YHkOvNWg=T6`>ZsHl#7Cxg)7sxDNu`9)tq*!DI4$@ zMjAqr2dx0woDAcFRX2HNN&Lu5ajfdh*(n)mQaQP^_J{i#aOFnas)&I=)l@FarCSPq zQ?}oOG4u9bno`V|@EP3!!6(~ovb#!+Q-mEKSs8yv55Bbl6UJ7@_J_?yDb2eJA5_)f zqk76z(o6f4B2^u!g_%<+dTo+vr$%kRxN#}{lWuHC&E@Orr855gHrlx_GyD$U|H}8h zpAXb-w-z*vJ)uUSs9z|7wM3ekpt-q3noCOlZR%VYXA25eYf}pO$o9EZ=CeQ$Q5kLFOO&3v@(8}wI!F$Hd|N7$Z5YEvBME-u`b~K2^LJz2L<>Lt=ih!x zPWD$_xDjESiq_!h(}UOhkT=Y1DvtC(;4`?NqJq}ezf0!tVBvXRbD6+Ft=F-YReC*<-ta%=CXfB zZ6{7EmuKo=8DeiUN#bGEVZ9Q2=}yH;l@GC;apzG=hU*gGUb1E-5jLcNm88@WH>wfs z4!gGU;Q=>nr|nNTiG{LhaH@d0)E^pQUsb8vKVE%k>q*brF|d+0l3-M_9vBH%QBbsa zAqsr#j;T^EJ?s6}HtB&fN+|cTjrj3wnVNy z=urteX=*s{oPAO#9UCMODNCLh)22TWs4goY($%~Ayp?Fx+~b}NrL+L-I@a8&DXra{ zHoa@txU)?R%3ucYGb=IE=DH1!VEU0UJ2<4o=N3dVD~UAsxqg6qH>+tg{ET{#cIA08A z^SUuun-2|rR`ypTHHj$eq#_@EavFbIeRhTIC3_`fU>!%;wrb@PxGJ5GG1#HtJap6~!2e&pvYd`I`Fx&}u~FyIfQ@h91z-=dk9spWwPZ7?$>s zIzZ+Di?xqosDOW_5TF3=vo(Tsr3F$NU#IeKWLsLfr>8!B+FAl^%+$I3OjR;RRcFSL zz#86L$w2swl_*$tVcS?Ple(j(FO8ACi^6Xhip2n&+xmFG9NHWCoxNIi6@1nmw0(Qa z_xILQ8{lO_IWT6u88xzuIi^Z#L~Y_*`Ka@@3>LB?hi`ujXtkYOJr@L$CHJ7a#~W?? zX&DGO+|+Z(3U-W2-O^XkQAd_{YInOc>~>>pE%$8ktn&WgRbl&k1SXZf2>Om0{h9Te zbT)t0=d02$H`ey2;5i+DFZZl==5Io1NX;S4;YJ!&y#?S*GqOsw;}SeuSD)(EL&MJv zPBLL&%shXO?5TzRax)KtSP+Vl$XQ#F9S=Y$x$)XlQF)^Z>(*}q)NO?Ipx1q1FsX4O z=qSN(Yzr=|amsz`GJS^O;O|8x-5mkx8GZwr6zU-kPz53zu8g?oef>z!tNd1bFI zO{z9+?+-U~1?QqvDmMU2=)*XjWPurpk}ln&OGor_JFOR9Sl24}0Ot-g*!vv7u>8|( z@_+?b=6=@|W$>hf_B$06iD2L*Cic0YZ3y1Qf^IMd-`c**G9d2DA%0X}vCC?E1+eKuQWT5n|}7{gMq`Avo*hM*vF3>#o5TxPtPxI#3CcZaCv} z7I0=C!;Qf>IM^@Dg2bSiZmQZ2UkE0l3wmI{xwZ!6wi8Qt2kj2M=LXav>^uj| zVcKoseed&bKX8|Zn%=75ga_hA3WD2!V((_~Bby+qoEC^3JI z9^Yg5iZ(IE!MHUxCff$$fP)$nf+bs)l|*@vQ?@hm5*fyP#Bl40=L3{l_bt0mXmuGI)z29mO+=(B4U$l&ZPT$s(sUI+9aJs7! zh^zv*Fl+-#_xX2Q?heNoIama9#$VUV_!5jdDy8 zCd>t0BtvXg0<;9UgCMm*K_x+D9nx|jz#?4wZo!qUuZxN0)Z^A>j6klE+A(vAiVi=m)<#0{^EbAqK|Ys z;Oawx-F9i*XpWPbSGq{|HqDQft6Ez^^MBY_a*V^-0J?NIfmD$(BlR*WcE%VO*NBu> zt`i)}W(rU?WliWh8=!XhjgCI|o*=^E^5Dw{uk$uvRm1xJBSu%avjdvz7T;4$e!(WK zwct~#?gg*=dw1RJ+ayvit2GpC10jRor&7X?~LQUx=(9(br~3-gXe`0`pJ#xMJi%6Qp3fV^zQTF$-i!N1G}&u@MWL0AE->5 z%MjuCREd$1za?*56#^;Whb}Zk2&k)_>#7;_ubDr#8We=p$HuZ!GoSa8=8E(te*Ub$ zn42%PgIimvWl(UNl|Fy^0}G9@jicq}zq#9jDe}sLTRY|X=lQ)`6aiU@83TugcLwOI zwQ|1)5-ixVJ)rg1&EH^)q5e1f3ZqzDR>~*@y^1msC?AMbDsY>s&qRNRiK%75m<`84 z?K1tqDOC<*1fxn4ENecW4azI~@wtfsne->DTn$BZWi%}R!aRDMqZ ztod$kB-Lh-oCUyoI{Ke04H0puh&vUC_#Q%7p>%-M1n#I?FTIBS%`zcoB33i-$fURc zC_&f0h>V-GaCcV1EHD>;UEAglv?*XhJ00f+&jQe9B}&}Z!K>xMrjVgEH!+j6QwLIO z1hf-LgdoEM9UH0K=1!w@D+1PnKxyV8kvlsf3B%l2N!?oRx8Rf?NPn!9jB}qthnc*P z^gfvA?!+j_5SbB=GN6-lAT}wBxFDX#ZE7A9drN5zDC=2B0Zbi#?}gw0Jz2&T&VycC zG5a*r7O)Vr)iwiw!#oCvG0$%RuL=XaWFnMM^*gxq2n$0smIFs#Xuvtee~TiRF|~Q_ ze3*-(u;D#Cz;YTPFAA#G1c7L<=6WBhxz!14LG@Ljb;X$lh+dWJQVvNCrEM@y4vHaF zK}BZ0+TR?Iz2k{Csd7qUanopPb5+hAWec;0e|8fwn@_OFZLTQW zVcyQGa*yo>v*4AY=&lICyG@vBYHhQPgE1VK>0r}2@T59_Uv%)~Lg_ota;SJ^c4ST( z7SIpxp6oHSu8X-;_v~_r=T-to|2Z(z{T}Q8MT9#f&kCq$WdQN%=>JGcB(b0f-i)E0 zD~vYI-q8JgQ70?Rr*M;10V4rW;$VQ^H@Hs>9C4F?m_wLEz?=(HCaHla&zj$(M8pwA zkx8V?-8)@>yeR2`5g4T&5uB0NDT8C~;lW&+eO{Tp(#AYeN*Ohe0g>cdR5_{h65xqq z9wa)B5XA&uz=)wy(q|3EBmjj%2a*@pePyr`b|(wo$rv-qpTh*u!Y8@aFmZ?|CKoYO z8Z$~M!V$*|v3Zuee19gFVWChI4B907^|*j7)K2(H$+Zbw*(A`EB%6ECEaCDs<~bm9 zBh=6p=3N30Aplt>s46{ICYx5r)Ce|RkKo+oar9$l(=y3|Jn|$A_;81#I!Rkaf(1WA z%Njm^Tfcto*5!{(g7cn*GiLy=In)S~csglBhy~@2glSKnOLBr>Kn5EQgwpi5 zw^W?)m_4jfZxC4KHdRhf-}_nWto(I(LTL?`SXA2vnF=tI9Fj_~sLSUK0?MLaXLH~x z>KBSfyJTdl%!1*jc8^Uh;(6O9@V!D$9GQWCXDmRJrYMG27VPrj!*jUt(sCTI=WHME zVel8O?JfV|!*eTor$`MjFq8MO6N`A>w(%8}^>onVM`jUD_9)FztS}bV)6xI20k~E* zGqsRmv~lh{IiG5pn(ev`ub%qq z;D}>^M#9l(3A9=f;v_;8*_0{dr`?Mn?Ik9T0C}N0XPJNg# z#BpSDvDvgRlm{=%fP&e$P*%#u&}ayMBr!*v5Wv-%^5x|@J;O2$WIzGwf;d_#tCakh zhv9Nx73|eVru=Yy^{9&J#no$D`OTX6vGgclC zn`X(Rwh|0T8WEb!2#uydqY)vB=x|o#3Tc`n>N0d-LS@K;)S@huw%K>r#OicaPzGRC zV4R3M0qyRowe2woV#bDSU^OAf(N>L74nR7 zlxdJ!Br@P3jyc_L_QfzVJS9XnlAc^5%@jmRQK^+t<0 z7T^jWb|PTn<`7Yx?-$1mNkgF7 z5Qt-DKt5$I$a0ehkm;cRjfBUj3hm7E^`kLj!PtSBkPzD49ds<j*B&@TCliB&F9qx-$tPUSx6`)@!`9V;`LXo zUvV4GH~rlmd*Sy0+LQy+m;pr63u|)~nN9Ltue}U!c+o|*PrTySzl1!KP)b1vjz%NG z@4x+8T)4S^SK|8k;aU9bhwedc0h!=<(PeA!t{=Lhw(K|m-|yn`^+WjK8@A%YO_VJB z)Le?+{@6qK+N0Cpj6n+8peX`0z=h8@2#vr_jEvgtsd{LrzsbPRkU&uoAS`kLE+sT) z#t_}QhljDf!o#yw50VNfwv47F@ReV^uJ(Q3_p5h*1KQY9nPQ?CXfz@WwIba1%g?HP z?uEa4Z;%#-)QgO3z<{l)F?&6QhkpAhyq~PYtM*bF#%2a6$1~y~pR2y1Tr}Ar0WLNe zr}C`9Kde0(r_b7Y4;uTlNRXcBxG%`u0l}U@^ZIDA-G1n2=NX%+{L8_{{ z9$AThGu_cf-EQWL2`wN5fx>2k;{}(DL!3J)EB zo&BEa|AVL7cF5Enh z(Xj^dTtX>8L>!mxn5eyX&(tDDMiRV#`Q~ldz1}C9Up>~qul&fB__6=}Z5%n7q9_!U z62wHfaH>tqIHk!!s1(^XB@K>dGeWb~e=atgkxAtuk>>`$Ddrd_0Rq~nLz^OxHoQk= z6q5vNAfsssmuJv!{&CElRA$g~MXr$N3?gTcib9JhsVX5ayyUGMslGfnyeSrc^LAoJ z$k7ur!)Zopin9lGl-Zf}>p!Kqan~tsGo+0`}b9| z!I3otMUa;Y(mE0_WmK=Bbk4LlIFxuvQV489kQKB|Yva5@jupZf-K z0I+&2!LPpQLj36ez7PASB#MZCyS#tIp97~AJKwZNffPQ`#2^FV7297Wl{TYiwTV?n zfGq?!94;o6X_&umL7h=~8nA0k0vIQif09IK3~-KXG$O=tgh*uOU=&OtCqN4OnbA7~ z&<$uK!LnrcusSd4<$$Zwo@pO&JyzQgd!hp1jKu8cYMJg3B>`O&K#_xg$pRm__bA@= zf}OSHKa=QV-`ocjlHzJ;!1hsNW(J*gy=tW8&>!75g;(8ms7Fdt{ch=VcO5DvBR&&q z%*>lZ2Lq%8FC@5B_{e?7@vi4@Us0Lolm7mj`=AR2=3>my#A?jUqqBB$MP;7P{%_8b zv{P#hCN)^DzzU7;9-ha4^R}M5ltoV!-L-ETC=@ufOYK4wZY=#ye1HW9FelO|itx1o zlEBNiP2jOpZ74|+tgE*T9^*^4jA74-wvi|?tY1}c8@cCH8?B+J1gXkIXM-~VNhFXo_!10?BTYEslp~83ctNrA zywN&?3kw9m2OaeqpfJ9dvGsT1Ip|)K?AS4N?aBo_AG6^&szL)B?~%cKVKRijQJES5 ziVE|y5dm!7jKnK{v~6oNIGU}90M-C7+Gq&Gu|y*lP`QE<8bXMY3XVX8eZt!Q!Pzl| z|Loccy4sC939ASwMuH=bNSbL?w{c{g7h+xlSC(20fope;;>hU~c}zB0kycQgyZoMh z348vpVZaV2$sPbiAjz(B_c=u_*)K9y%1NjLK+CK&)_Dkjh5(u3(J>>5j$DWgl7=-6;3k2yeMbnW%5%bvkHvS&8oAs1E!e4(URC$Kx@)EVaG+SrRH%0YrO9Jg zKyM>RmtTP8Iao&j{_NWa@$=8$@r;gYt+d8pe(_;&sX;ES_6kGu)bxr0769D(SNGtf zog8ntX)wrt{QEoh;)g%>;ELbVoSt>NACnTSkl<3{&%S*KKY#PKXMF$v#TOq3GhQ#@ zv}#Vztr%bd=d=Ik=%gq$SfRkp0ps1De*#~8=d~*?_k7W>ef)kz&=5vJV5L>w*3w9> zs*J>`9BABVkJaFURBKNjo5Sv!$oOL;35JIgNU0HjMI09yRbD^3WXl+)x&@gm2!^ez z>jBo0g$!{b(9I>9HK~f)g(iEZm^Rcn68NvL-i__+MzFbJFZZEu97CQ{C>#rR8qL9y zp)@5amMmZZoJ1iRv9i z)|ClcW*7&|GEjfuCwn1nRCdO@)HpOKH%)z9E5;cy@`wOd(hz7ixv_5(1EqaQ!qG?s zidaD=9NL6H5P}S^EqJpW+$9cILD&TQS!o35Y^MUi7ZEBb{^^YUxls>jFjau%l=9~*Pn^X5nJ%_ZJag5w2d6vu z`h&-iC=JduxHIIXuq?zR?KbSmZvI}Mz6DJXFytMuR zH8$Qr+AWOd7%}F!hN)R+3*h{W)Lw$tT=?S(nqVBGIlW*_GoXHCJk_~_P3Ui zM#6Z!K~pwY6RgwDAI9xmv5d@0x~#*2pIt8Ghw#!TJGZQjrqtxXkPGJGkJ$vl%rIF*s zA8NA$9}y4~e_Rr(~V;urv2?Yxk zkubp70C*$$E3IUv!9fx%!A$(Vf?`g&CY|5Jf>DRs}_p zwT6*kz}VCYoE#scxGgKB+m0>bwzH6s^dqJXs5P1P9C4S`#d+^%J z)}rwYj7pyt3cvn|`@r)8OsNVBCmK3_8rj&$Gq(SSk58Mmp#aUnqyjGr@GJ)}68zgw zK8$~T$2I5t-RFw_<6qqcUKC(b!rEsr?SmV`GDQ{|v>H*rl@x#hn$#SS<`%87?_@o2 zofuBgY(-E;f_1@vy1|LzH&3?E9EzYMaQXWBdk;)^+#dCrM^EA4Ocz_nn@~#Q_-q$n zc=#0JSU6@FCt{!~ZEUQ8cEpkA6vie=DD*);Y7NCG3=^eTR1#?_kr|t;Jd7uZx9 z&|uF(Jg6rV6`27&AgOdWM{j}lFNtAP)8)t%wQVwSNXbR`cHRW{g!M z4J>2@gy2{=GB_aa`q2cc5az%o1%gE1h@2zXj%*!TY72r$x#I2PzOCDLwzELG@s3v|0i!ovz^4P?18ZtA*! zC)&GZ27|)#G+P3B9zkm$&WsIKLcpOpK<#D0LL3Xo1|VXJ3q_#|$i5{u0ZPf1oS0H! zKtgU}m|3qqE4_*nZqf+BXiwT%R*n2IB;Hv<76M&@~}S81wIpB942eI(TrJ zLfPb*^wPSRLu&z@&{)`baZ%)Lojhp=dqU&ID8$ERz-O*9x&1X(z^r)Mn zHFdiDqY;}D$Sr_8hs+DS@5_7f0~fD;#`XX2{^Ns2(jz@+ubFPG6Vu4XhEY6&`aj7s zjGUY;FKwesVTA-wGw?J6OCr4HZ|=pRcioKEGf0Zt$t7O@f4%{p1Gmt_wJv=-+kj49z5IzV+Ayf{fg4al?oh}ye$b)pF^ynp;kok zgg8T%Q9^DDu!aVBJ6eF1Bn-xXjHFpjj*Hee@ye?vv29Hgn|Ec(P*Y&bDqojwu5e@~!^ycE-*|E!UwUL7okoGQ8vrauebH=^3h>|D zxEhyj9>VVR9-Mazg#$A=4z-J(`dA{#57|FK13V%y9LF3NZD`^ZS59KvnntOwj?QE_ zwUFbXLyP#>-KUX%b~)mVySQ%vsU2fezqMltUUk(3F5WnVO+h&T(9IMMo$6rUi7x)% zSB_Ggs0PP}-d-R6nuXF?pf%4?RLpZs6C)6__0Wp&bqX&<< z%HoKV;9JP&7ZIg}ksjKK-8;9K))+l_ z3^Tj7J|hxvbEUB6*h%=&-;q zxff1<;_B^Vc;7$m#n&I5g;XYzy-f^VC=>3m{OnT4-=Sez$0Fj$Gh$w`iS1;s)scw2 zhoUg4NY;%dc<1xi;kmo(Jzh6WB-k{O;L5GTc)=wT_=~Sk;oid?CyC0Kf6cgGd_WMDa_1uiT8AF6}SvZN?nC);6(gZ4=k;9>uG! z?%=mRa}>vBG7~F}Kv9wiJbU{P{=eC39o@_m~GcC8=9uJxmM&IN1m zifb0|`=5CXC+50j>zHttC83^z1zx*<*lT{X9}uI%(qZV;ryl+XwLJw_V+{5uH!Uq{18j>|5Bg{{$M{E_hJ@23#q7 zlC*XMPIj-rx+%u@AH>X#ZD(ZKV}g-^HE-rx0~B>VMTATv-xnjDkNX8`le#K^NnpmE6c+*6JpL^*h{O0G5;J|c-J#z&DlN+BKqK3YwGL5Avz!Wh(19k>dq5plfYvflMtdQT$oGq1Q12d3}Gk&_+p zl#JI!#JnlfGHKWP5xn~~m*U-@co0e%JFMl7SxqzpPqZgH2OOg!q*Z1U1!`Z8GooAm z8VqX^yfpkfpx)*=`@a6F!pb`|z%(N@Nw*8JxIq89DQ>QeER$U!}sF$`wl^LQiwDMD~$AN8O$YK>|pfJ z@u#)_*G!#8tJAH2tcP$@p*SzxN^#q%3tId8x9`UveDl!xu6Bw3*X{f9zd!pJL?;FB zl6uyJ6b|mPpM$`A-Vd7Y&^Gz4`K;jbwG~RDC@9);zks9bhGQg2ge{}JjQvozS8dZw zMD4u*aAYPm@uqZ-L@^|rhwhBYs62bjGR}Y|hhu#I6|2#IXp%Q#6j978W{tOfe2jq3 z{X8f2AgQN@h9bP<#&vzc)qGYpASPNtijm3D=^{dYc zTmij(_4XTo*7gNggZk>7H?POYSd6jp7^CA6e&XhJ%LZ2faC|l;?@eIf;hthhQGEv) z@1F~r97*u~SFJ;9C^jKXA~YHi9z4{$-cKxMIN8o?N+H@f(ZZ{**@$KHx*9LD4U%x^!x z>MBx8oj|kG0fd0&+GSF*OwLwW2nGQSr~)zviVh>yCTIBAeaA7MN_^xEm!JRs|C@X8 zh3_7JK-}&^bW*UQ0CS-kmdE%SvkTx#VQ%XN=<}$qWlCYy(GwU+GY3b?`PM?xfFfrD z(M_QvPIcu1|M}C8<8-IMuidiays8Ve27dJmPvW=!=^@1JHbj>q2=+nCN2CS!(Mw+v%-g<za6EDg_wu=ifbrpL^kYXMbjCG~u{mV{hEDZm#hEzIxmpXl=-c+n!v&i!blu=t6;g z^Evi)BpFRNI7XWSH?3*l!qHwS<~7@f@#TYUXa!uev5B2)>LoREsl+!AwQ)LCc=pC7 zF6g7S1jy4*#T+`)xM+0)*KJ>UUtPU_We884&ai1T!p#@dt3cC2;m(5#c<4wQMW(Q2 zJjTTvhVby=Hqu;DY^niskQ-GtpqG>a9a+dRmq}c*YOq9W?_7$VWA%M>`POkX@13Hx zFO?a;X}sk40*=n7*f*D9Uni%0nu)+jQ{d+Hqqwl9yk~8jz-@b`!Jr3v5fWK{##i=q zEZt#D8Umrbkzgs4i_qOze$a&w==07}X+0P1@5^Oqm3#V%MpBKaHdydZI&3}0(_U=E4cyR%u(}u`$a1)awber~V=xvsz zWPTA7kMF_!_AMw{PkoG|B+amY_SgwTc@CE|%~sBVEUVU}_%A|GG+wO~RF*;u4i=G} z!{;77b)Nfw0dM~6yRdivX~gXgM5ha$%g>8{;d>`ncH-=#GGE~9dl&GcKB~Yfef5bs z9GJ$ov%z`WHiEcTZZtWtwY#8o}dvitR8S6+_9>Ef#IPDN^4xZwO%?j zmrDG0ymAY?VU9o8hM^c3s zUQpjZX`%4J@0`GcN80FiBs!fO?Y2agk)3B8am0}-#S5zvadxvW4VX#~pYGz*`)0ww zFqcVOzoEXrzI$SS5#O5X;QF-%o>LP_W%H^QTFnShKv75t!O(0(_}$y~VPqu1wcEyU z%l2{Xm}sF9^&X}|+Oc{VNg_b`Mwer{1ZT3)_a2K^v`O-;wK0V-60GWiTUt$5sX*y_ z2qKnhfUkH-kzW+{t{MQ%mz`JhR`jo_J%A~?? ze{~<;_xZ<=&(0&7UqH0DNDM|6-hC5&n5DBj0jkn1k!2WvVlO)D)}XU)%~N8R#k9uo zscDR!oPmZ$!E7v(ateabrJFMXSCO!}BsFv)!O|2W5@3uWXADnHDctyhyYOFMu>C3S z|NVI17oI?WKD&r`v4d!_L(E-DBfVM~MR|@*hmT`+avU?`qfd=poYojRF^!><(})-& zfC|8-_!zhxnNbzy5@4A*q608elrKJZ0-JyL>-dMaT#4szt3T163%Y&(3|{x4yD>lA zMzq*P)b2oZbF%-j61br6{2mkL%&}me)f_xRGXfibxmp=R_X0(sao}XT2VeofmKyu3 z6YU(QYCOAQ&ak0ogWh{`5xI3`=WL({5}mY7${J8G#eP)e%KfuB3Dp3A^`!%INK=wU zef{u4Ex?)_jwyPzU@o4I%hgtzzfYYc%X$$4z^3uu{!ci=+jlPS(6xCyadEsPQ}~z1 z=WxM)+9tLwVWafui7r0%(45KFNb|-8ER8r`uyX{jxO}`;tvHApO#!VmHjdQ;=WiZr zW4c|S$fF1Akaj7= zM>kc-Qt6`VOC^@rbAshL;J!N!%_HqfFa|t-aH8E8VBK@F11U8gJ)PD9tcjtR0G8H} z1*yCn%?RIj;VOLpvZ_Jtd8O$XtpKfb*~q;IXeqs1 zjY?37<*Q-J6|E_5sj`AsGN}QbgLf7wa;w&0T0*K(q)OpEUw9IKb?-6!(hGOs%~z~{ zJ15C;3#IY5_aDcvf8lZLJu(B)ZX;e?gji@pq#b8>6*i%4yD zd;J=u6Jxz1$CZ%QXwJ@K$QV;w#fS%0CTO3AL+LJ2C}$9gL37g{rNNa(l4%!cjzc3? z4dhzmSH8Fhe|6t+{L%}ypY#6zjW0fbi9JW=AUYkyi(QDt4tTdq{eKqV%En$|T4Qp0 z7LA#C%uJ4Gsd_uCOKUs=k1l37v6v#0y2o&QU5)DP&~%s7ktX1#8lW0c znj%pv6Yw#w=CKP%Dix$W(M#HQ9hu2d7>Vqj0lsYhq=lh0m*Mjt6e zDm6a#@GQdiasxW!nBj-7nZ(O4pIA|S;)uZhx;|c%cOUP%c}aEVnCtep?P46@n&NM* zA36KJ;+$b^pSs<3v<+D(auO+Qa9Z*>7e;mCkP!(3NF zD~+k5e;*|c0!1pOfTFK^)_T0SPj-Z*D2kW~lDf=2yeG)0C072c;m?bjB=(WLp^9gg zaJH&>k?!+(@Kf}zWvT?LWK|3dw23Q4@uqA#5h=lP2{t+m)o9_#;}UQG_(OQlm-gZv z*KWjHuUe0tD@ZT0ce;yzzrODnKJ?wg*grK3k*0_iI}nR)`j@5@qpOr{-Tv(dCj0yl zjDyHhj2=9Kq2nizPEH`59EVKKd_jsVM`LCVjp;cTKs1~}EM#=bCQmh?CAb7*3@VUj zX$=%gk%44EK}chz0h6zgsRm>mW6$vg{MaWR#(Qqthj(1FVdedQKhwqE+-PK=&K|Iec_GhYti3T+H= z%{Ohp#2}RArj(`}U3qSQprD;nLbe)E4UOBLIEf4X*J<3eV-o-4MLTfAma!E9-9l-6 zxyn0dAYsLt}j03C*CfSQs6E)5MO_l1{~JDfFeW&r?y+KUAi7jv}R1u_S)1d0Le zchqkP&zMMBN%MtrzO@UDRO-F}t05TH4n;V^jMt!Gh!_w@95?P983?X2rExk_*w9C^ z#ra@+;YE|ih`M-iNDshj3eH5B(Vwhzcd5GBIpC8iD`<6YrJHFg-Q3rzzmzb~B&1T{ z)kwGjQBYTZ0i`sq-7-25TxCjQI+Ix6N3uoIXEo5v*CuvmMyN25bg*9q%QvvWGF+VD z3_S>|YOU~ube6NF7T{HX4Al-Mg@{r>oMJKTP^(m?EQJTWyx_L2L2+? zy|1=LZ)o(6rP0_og4iJdq(DL+5$FnaziWAEL z7atjaaB6?Tne~Kkp4`J%A3TfC-2E6nbnC;o>E2VIwOmuO*xSRfyNluMS+)6Dxf5%s zwna)9Q&y|4n_tm;PQ@5jYaGAt0UW>Y0Zd1aV7%xA#^c8@9ofOOTp|Vn2Wbldoog)i zS6J-sV|hjlk2f}b(f>}s6F|{u6_3FaiP7^Td-2WKDTJqo7UtzJk z($kvzpw%etZ>?t_&@qf{$2aL|N$Vmz%{HvoIDY@bIDY@bn2zjVebF(DM~`4UvV*vP zvjB%swf`vXzqgO&X*pHeEf01}yijj;JexbqeMZ$}#W8)SaY7hJOyh*<$P&C<;A6Ku zgzvoV5g-u0|AklJFTCPPeEZcG;p&Taa6Db}Vs!@2t|#1kdWFy4dm8`l^Y`ID+;qR> zy&kdHUt`$Y$8dHfr)Bq6vMp$PIt74#Dr-Am87sZdL!@0IVho7tu3=n>yN25yIE@>g zv3Wb?fwL=|JS~0j%}4eQ1Xz3Ph@0*`Ek3t&CB8|BF&prclfj#|2=je-LHr7B5HbL; zUWv__mNXmBG=}LDluStk#Ai+Orm(v^;`He?&YT&OqtPQfqH)+{!(wwKGGl*#jE$4m zRb)K8AIlS>jQl<7iP6aT+P%B7-Rc|$e%G^4;NlIwngHN?pZ7F;>8`WsuD{4)c>l*= z*tbu5Xn(>dAKb^cb|(xA!hhZ|%+K|kFZU%+KZ4KQvx`NP1|J4&Jm`~60S?zz@ZU9$ z+aB3Z4mo?_wb!1&@132nTuxYjF9U|ffW@M`ggcnFc|+KSg^r`xb_J5#;pW0>J*iuh zO$$i^^d#&XpLBv#U#R9xo;wyJOf}8GnRPDB$+9J`ySy)8|jcW{QR3G;CM7ZqkBJAmDwQ)k= z2)%+k*V0bk6=1ZlscHp{f9cZ_hP{0(_t#jQJSE4mL712^jT54EcGnW|F#VKOpoaCb zmL+d(Os27jx*A$X&}tHYHwj0NARJv`I&uW@$P#fFz>5XGa?hi<>E2U7kh{;@QW+Eh zVzD(E;)J6yVpvHZEcV3F=CE2JOm=x0fRKIgz%)Vj+jlQEgRiWm>uVN<{nadBI;TKA zTIRt<5g0&FkhPNbqH&Tdb=DKYksZXNJBZ5xaWMcxzW6j-?gt7$697BrKptYs^D6Ij^Wn{f8*h_h!#?C*;?7iAmE{n@jWf1TAH3@jb`d&lybPknaPW?0!eeSIBG_TgjCOZC+>yowC^7v>i90P zZ67wTI1f&{?eiMMQS~U(O+0}{mRq%>fUL#-KH}aUrXxo%?Hom1?jSA(@URepY`1CJ z%s^DL$psuNV544t`)+bA=4zr!( zIp$ew9uEqofFuZ$P9V#9woWI*CIC^qr-w-{hNk^}gq?j%N0x}o9q@92xCr1uPrjx0 zw{isB1_jHD7_p2Ii)j>rzP~R(%gW%W$LB+)2Yz+T?%8JWB?~53M~im>ROfRcjTxgE z)~<(tm{$=H=E1X;QyiYq@%8 zrI$^wN4bV5M$m?BD*$p4YQ1JC_=l&U53bTK7iS=|9>wYCt@l5Mx4fut7i8hV)BD&v zy9NWe{lT-q^EcCc$Af3ZY3FJbV{7n6&@_#IQSDr0?5;QL<-Pqym*b<$fb~k;G~9D$ zy|KH+EyckAD{rYG0a6L9YUlxolWL3R>09kjSnW^P+cSVg026kWF#)bFonsVW1mNZe zb{l{N0B^tcI6i*gEkJ;;o$$u%kKxTTCk_G8^o(oS3HZhXdkw$>d|U0hg@pj5>yIyRGyq?JU=OEO5knw+ z{rcXTMaE07I*M0ZcLF!xa~2=}*6DPq^jxq71OUWg zo*#~*06+p{0WlZP4tQ(=SXw3#=KD`=%R(f)e#6D?qk4o78@B#z$2O4OS-A+{IEYwF zw@@$uInWhI4ybTsOg85LJ4GnWtx()Nj)4lnbr_M=GF+sM{wf#M+K4tQB1{o~Sg$dx z_Ao4WFfA8|izCScHq5;P5m*hI0f6EpSMp4gfU9v0QlUcYQQk+fe@TFEBUsud)WC;R zedKYa=}G(doRtvCuB`{6vIgwjXi^ZV^)+Faqvk%L$iP~!sadZNVSb{N(BY1xeUX5VAAzkjy6hV^Uw{7vwoRal)C)GRh z92j&JBOaD1tyHq8n%8_CHh7z_GS7o;IA-&VvWg0;F<;KTzd~Ftz&lIuVgc+d)qfU& zDdaYQD%03Bx1zP8aTGwc){D!h2{b97o28R--HIXUK^0Zskrz4*5Q8j#9-{cg87J8y zTInKTMN=z+^Zdk!*E2m{yh))Xe82 zz*00z>y=yvybcrAD*=Uno6_y?%jvxj-gFXgdG5uHVB8r9-*N46y#A_Vxc|(Uwgx@G z_=S(%kKg@<9A2P6`2Lq%ic33pAb$0c6|TEzfu~hv99;zbg;!mU|L1?aSNl%3e0xIr zd#^o?TTZQU$xgtFHUO->y$RFA_`Tas&uY@1|MVkx{?oVfTEALH-B&+K6J}t2t@e6S03r+0|>}^=PR$kJ70N4@%%r0>OOqxt}_WJ z%!N@eysj7cbr9ouF>)W)^AYnF;d~s^+7Zz8cLxC9`>acF%gJ3_a%6!QUEcacv#`HE zDxf=f4o|vOofh4HdgzN)hrK# ztZLPodTbLg@M-J33S#9clW3SYf}*Uti3o96fQKRdfd;`Pdg(PWbbD}=i;bh$7m;ek z5P`xV+?QLNlp@`xt50WaYO~IBntzv#>D6v08Pm;`ao9e8E89JRZgN z+p3xJ_Uy`?Ne%lWh5=ZwhK(Amy|c2t7nyO-YQpX-f2R-Mej3labO&$ixHGunilcbTvrpi|w>}0;z?bhn+jZu7#jycb96Q)$ z!`ZWca+>s(Gb4WgmdEhsj_<0&guPv9<8fk~J%cUUst^7yKRRGnU5~8xC%o?q58=XsAJd}dOLshq*L3Wwt~j>r zUUAiww>PT2<9wXm-4*utMQgji9Hs!%Q=XWf1AWKMeQ+ zk_T*CfG`6~W&|=V7pHdiny>Q#Uz8AQsBFG!FtWwmVE0K<5GiO9z!cJ5h8PGSQuhMv zoDAx?(k-O41s-*%7IUDc)&I_m4Qr2oyibVYeUV|&Xf{76{S-rY1qpDcNSoM{q9pZdsZBQu2y3zdy^lm-Q6|z_a}`{ z;0XNsC-260zwAmJoAJI5$oAA~HEp!-+TG29W*X;d*x!%hw`(0!pIUR88;Nm$j99Hk z?C;Ohw6`brP^&%B6atK}BCM7pR(td1pWPj?+Mh5*AcTnb{NY15x(ImtD>vUiSBDo~ zbrjPW@w8(L{OHWRh@ZRb3~sq^7q{HEi`QO#6qj@~Tgr?IJv$+C#9|0| z&!-;1(Sh*xN>eo#o^{1hIheuIMiwJuQ0?(HjKSUA5z|^Pgx&ze&YoGz&cg=zclOLW zEj)hpQ+MHI*I$C88|KocaOTVkaoVhX+ud7ZZ*PtL{k8VZq+5#&qA3Y~_#qI630N$$ z-5$q0-xiqx0z?7Ku@E{Iye$ZK|DC6{k8-K_Y~pMKIIP?b=qO4G1_(ql@FdKgA_F06 zJtxggt$hu&*uN(50;QFG1}|;>L+2^mHsaiBzNvG)dMEcN3neoflV`C^UP^GBUvTAB z+JyXC>(Dd_?~}z!xKc0?Q3Y%vrO8Y%E-~%of{@^WaN>YasOF4iU(x%6&j2 z8Ywk#21UJC*-jx=z>d@_ajJ+PW{o?AnogZ-1#q%4~;~Y0V&T*3+e-=Z1VabYm ze}BZ;vnzb#&PQee*6sJ4!egg)lYm?-0`7hA4Dh_Z5W4m5Q#gA@fZJLb{4{O4jv3fJ zJ7RB702xEJRPKn3fAni##b5u^&&TB*zg&RWZk;`|7J)Pqyr5Zb00?`#qa1%91vKa5 z_-ZE-8RL4wYCmf|x^>xGe`9}d#CjUBUdh}h68o#gVqSxF_RJdl`(htQdU^2A{oZ}} z#(lf^?w4GOmp$`f$CmD)>3G{qFPjBzAHDT4oLxu!i5FhdygPG70oF?R%rFps_9OS<>-X;B zyI*=KUcOaZP59#Nr*Y=YTDQMseEh4A+>5W@dlv8b_A7AXRrA|s0B~kkG&ZtHFc0$2 zo*9$-g~i6PI$|0le-;CP4U2{|r&ox~8}IKt{n)gzxfsX(3_u)=Uvm+ z9^U@o8SIS_FS@#YfB8VT{p9Xu4c3``?C+1V)vt$WCRTSL96=aVp}~j&;I+sFyUNQB zd@aP-i@+Sza4RO}?*Uf%Js<1Nf0)=F3>5fga~kr(Cav&w zRgR#k&Ay=qH*giNn7{k!ZOh0BpA15{Lu&)YX6jM{u&lL7TT2Xd0qyM8YoqE&d2b2^ zMoKM`rt?|OW!1F5X$))HMPq`HeYNGg`Re-kI#3cQ@`j5nDQQsv59-X&+)m_J7)M*d zm-XLv+p(;&e>-lS$xxfGK~6F0{0kHe)+*R?)#$BT>QHpI1L>Lp+3|OV0;~!w8=6Xs z36$TPzHK`@4_RAGb&1mu+h^T{M+U8<-buK>J7S=K-}~ZyIB{fwuo#jdtKDPviLXA0 z$4>1hKUQG~c>kyG#x!xd6d8cpcQHQrnR{^Nv@qLoe-zL@jbh;XD<8QH!y=SvV#My5 z754TftfvXgzozU-**JWY4cBfI$6*H7Zi8F3c-8-H+T zv1Jm~GxX`x`?^vl3=6`qee^D&TeY8dN8{e^s5I*qVR9ZB5#u1XYoh?AVIcg<@85-C zDC;s!e~jHTlW4K_#IRfXQ$QBch+qBvdk_}B-2k2#kDU^KUE>rH2GRKK?+^Ik=O4j` zzWOMxym$vMyY85r=%YNYm>FNcZx@fA8S$ArcZKc<+Xeh>-flH2z(~qq|1pL7_Mtth_e>3>@>yP2O%XV<}B|D%%xc#Ah+;@7! z9gnW?>g$f<*89$?4UT%}pBQJ)tnt{XmGJmLSS~00%Maa$U;p&Oc;k&1NnRxM-2d1b zpSkla9^H?4=EX~_c1PXXX0ZB8J9}E}`}Wm%J_N%4e#8ep{|J8ftB>N!OLp+`Ymec^ ze=Cn>IjL=R^S!%xLman;2;c*Ap_mgtLW z!+7_@`}o!ayZF@Yr?rp8Ey1t-!QI6{pJ;7(dSAAuSx(#i+DGroN(`NA($@O`3kaLm z6MpmKcN*g@`sUQB{e&NW{bS!Mb{6c!f8yy=E8)K^9@sznl?U;uTOP)1o^vU#d-`!) ztMX+relh=VLh5yej=1C!p_8QyiCe)0wUUeGdf6Hka zrBo6XROIE=*Ewy?RO_-FQAM%T#5M2ZhLD+EnN7M1Db@KE#gltRDH)M~wP7%yMo=}q zYm)+Gb?VtIzokJ=ISg8sT+1*`89|rWXAWffa^}EY&SEhH>?{WiAz+-M>`zZK#@Gb_ zc42cdMHm8Mu^6zkkoH`u#-cZFfBIm{Ki?dziH0C`TrL8pXvdjjT6pv{UslQ-`09n) z=F9qV93xf=>PpR5UWm+XJEnJC%&yzK2Ff0O&99_!au_cZkUEs*h0>d(ZKp3Zp)k?M!f7ff-h9eNd zFo>U|oduT5A#MFlQ^b13vPH0($i935PvYi4wge64 zlWw;!cLp5US>VXg0Xs(qf9&i?T>t@*t5rgE!FNPI~xcLJ6>19o-@%jF{Z#EQ)7 zNxH& z>MDPRg%%CN^FOU= z%!Nl}L_K8}C&_zHHI5V@`7Hx>mW1Wbpko|v4hf$h*NpWzCI4un8jKrXS}rNI`H>yD z%z8(?{7)leZ#81ImhI$eveSXm&%;1k7sCd6IyQ|#+0a=m#E+XD%9B%$QWuVl<$~nm z@db$t1S#NW1^=v5f1V4TB;#<>>#(F=25J|2nYgrf=9?6Ng&s~Cg3kMK!g?)R>(gjA zC&a{~6Axs)6=Egk2K&3RMYvv#DV-^xgaygB zAF)^f!!W=+w{wIpzBqwSWBf9RIBAq*EK1vifv^Y>f5SoqdSoeIz!B?dujpJhSbK`? z+Bh-@vQU{u#%dK1g4m6jCd}L|OeWkAu%?(aI^#$fhJ57Ryz7sn`io+SNk9lv??nby z0&rYCfmFZbY!pc2ivab}B;Rc@U>Ce_Lc36G@T72BM|jlsqMA`)hgAG^KGt zBqk$+0z2zF)4UBsz;Yo#dzzxyPfc=}dK}fSHE3hh{=7f4vw@qOyK)N9!`7$%0 z>((O?dAK5q;;NOP2U!JC-LZ18kZw~@TIHsg9Z+|eZO2p(%I|DtNCXTl+kxpU1+!}+ zDtxvayyfVC7l}&S#}hirIvPOhw^44Hf7y4l8s|Fx3;;hcUG;>8$%$!$YCbT5!O7@- zxfs;%7O4hEfQ2zkVKKUe6$TOX%6FhZ&DPD) zsA=#3sc$3*V2D}cm)ab!OuhgoMvPPPK?e{*e_(Cr3<3ps z36Njvw)r?ktkx0JG-}%zxK$07Hk4rz=7>ob2h%vF`6C)T(_VRDK+603SS8&>2zXF6 zAIj@q(o>+|mgVoXHJCX{LX4tv>wpPe-S)wmrnd@JQA(RHau*iQRI2y90aA73UWS{2 zl?R=DKu}3^$6y=V6zyDLe<&`$q70XBF);L>!wN*pO#x5q!>k46>A5$CuB*SPZ+w}S zW)=w4na*Wi1L9tRC5YT6Yzw|5djh811#t)!K($aJMzI8Na~m(f%J zF9Ua!9jUT*PY5DZ@???E+3H(jlY&K4*JGj6*3IKOPQ)h9?n)h!e_|10V-bf5aU3u% z%;gMJaAk0nSO-n2&6tWdHf3r@Ez$xvMl7ahlTH$!%(5Cm&Qx+BV1kin#`00hm_GK>^N%%}6sB zvQW#$$35_1e{lg6?gUg#Uhq!NQD=oCkWPki{VD@6GK3jSFmal2X`7PDyvzD;0#Pnr zb($*oT@P5*p;KO0yH%%WS5}U*wI(Yy`W6UB%dtP7h5glZH9)4_MW!6@>;Fg`Gh)oqF=j!%r-+;pxNfj>K>EUe+kJ|2Bn(Rw+3X_9TFqkH0DSK zuwoQuJR+(Pvw2`cq`x}zhY0$8SM@)v|LUPo4+5Xw-gS5i>m0W_Fsm>WutAe(DVPJI zUS?aKUbIqli%YM)kgO>QiafK(fno-SfXN)=8lwe+V@O*e8OSjZ36WTZR&Z3b*F@#| z=Qhl4e^}IxjtDVKAO$hWMh|(sc_-}|T$Eq~aYD55Q)ta{AIo>$rV9*AavNLbAD-rX zg^K5;L?l~eL?8tr;v~5`dB>c_p^fcCe`Ck2<1 zjuIc21JAil0LZCyVvLh$0OOivT@c+ox8E$le*lcMYgi<=1VVDrIsH%zsXE@g!1kyyuU4XK&z4y?+OIOl46?eEW}y?RB~4~; zq~62pI(VRi;&-`y+NZl<0B-Pm+S?=U{swG+M?7VSHjGgY(<07p87idY=w0B-F1S^ zWo;K*ts4knFqrh>UtHa~2De^qZ6 zFj^zTiLT>i)VWiL8&@J8me_~6i&wIvjH!_4 zwe-8*(-;XHl8jh(Wi!W5jy2({;%(DBC7_9&F=2`u_BEXgfg$q~WDN zNQ)Y=^V4m5_GTrXc250nSAJ!HAB#RVo*r8-opU^@Z(ol6if*F%)VWSxn`DBT zDAOyv%!4Y&l$6o2t6#cLty8L}G}p1$PHnpG`%<+xThFS*4d08I<2rp#z}5Lw#?glw zGgTiJX{j5fCg{|2MO4eebMJ9Ce_L;vUWyONfw!$ z0b*N*YQMnRjDFC0-pDFR0Za@UtjwTOQ~;d`3uf1506?~tMvmuIe}kNI8?^70o7=OA zkuH=s`;i3dfO6Gcw3O7t_b;8>-4$@SB zHk*&0zWO^CUdS^b$ZKWkm&mGRiMq&ETPHa^h;*Sbk%C#Xt5Qv}(GduZ7jo8e5~V@s zG-a8y7}R%?ACH{1e=-RGFx>W7-OhfD#_AmsP?0K2!*i5F9Ab=~+ZR1h!8$LzI<}#~ zepQ4Lv^;TZU_fVzwuM^fsbeepx}{3w_X@DAow98y5J>r9jNll>#X>Zr{0gL@8cS*6 zWgx4rqvIV(EGu(`>Ez1xTl9tfw$h|#hTEoUAV?=Y!%!;Re_-yXY11aE2uPP66X_l- zr9oAy#ZACvL6?CSIXWmk$_yz31Up`xeS6Kdrw#_H+pubn#58+AOr3VJSLx5SQ~ip| zXsJPZ!OAj5<3PaHSyn1} zU}K;n+dbs;HC>Xn5cEWVX$hJ(?bNZLp$%Exn{oTXtNh?J$km z`BKFp*T8-7>-up6(8U zc}))&{m_vy^>{a%Le4gN=@e!HPX@Gna|$TShtPVwi7Ot-nO+663>2padptKqEXGGi zp6R1>e`vwQV-7kWIM*}n1k`vX=A_oKJ&;=bR{3CaBA^`qq`x)#f~X$I2Qhd5eU6Cj z!bZWok=d0DVY9%MNo0&brjwuS@=tAt1~{R>`JSXgd*iiU>6!Ry3c9$Aa=D@0eH8pE zzjmxD^*Z>vAvf9U;%(rWz{(j{k!HBC&59WTf8e+40L%cogF;Wx)yyE1LxglR`ND12 z%_WvLNm?wjNgNM3vJW5Xg9GzGxfWRc@zN+J6Yx=u%>XgpCOaYJ)aW(9gpK=LZmnAP zq|_Sa@}~nyMIugfpadATRs}hIdej+1DJ{8tdlSYpMtkPV>$N*o#c?N{e+M_Os4QnA ze~+u*W&R*X;tlix$>V>ad9Ul~CKlTP0>9m3iQM4=2F&Kq=e2qM)nk;acmAty2b+KM z`Ief!Uc???t7Vt9kpc&8OC2$(oJ_rrH!gFH9$>k)H6WJw7jiuNwA(3$08k{vz*vIR zpj#CHdIFe3O!QGsV=gkZV=#+bopYM^>dczJgKjwnh(wuv(kslL&2F3~htd_eZw z6(I7E;Vwb<@muCU!}Mz=-c`L9V2d{tBY+%Bc2e+*f8plalL{u?QltdP@Mkk>F7a4WK@$4NbJw&=5B zj@Lqgs%R#R?VT$tvQwW_v?L8d5BT`@+r($9!RZAUb>1HYBGcD?8Jp)qXyUh_1Ne08 zkhuyfp1TEb#ZNQU#l;laA>9ln#KI?fhhl8^CLSh)hn~2r>Nsx=!|LVz1t>_o)!+(vtB!Pl5rBxRowP_4elM+ zR<@hVBWDMe4-^D&e^8I?YA2M;>WnPnhDX4F4*(lCMhY{7i^D2fJ`t7!VHji{2C{uC zD%K2EP#5QP+rfd81kjAeEL0id*vz+4&ZY*xy@ERcIW>Z{t??!T^Hf}sR1S+ee=jhr zIBCAe9F>I=%AppWU$)(vaFnE9)CJCO`Sd3Eg_3qN6KZy%f6kOK^Vmb0ti9@R9WBqF zcCjcNoq9E8Mj%zk%4run5lOJ&%dn%;I#HMlA2|8AeaYkjBqr^FOx{a|_)!_;3JJMj zQtWGD)WPkx@;3KN^{(#Tf+^HOxE3Y{m32@kCvf4FnVrqo>{jOahr$a#$`dcM47zxK zIJ&&cg|>)Ve-JgPw=BdMw=b)n3kQWPq}r|QOeedsp3M(J1sr|(S%Ng?h$f(#YMS7p zhWca^Lr{lMnla@%G+G}=hh4tiwyk5jU1AeAhHtC%uCTYPv(@oz?KZors7{Rb=<{?$ zmsgL4HyG2`+jx!fMswp)o;)w>>dW%=n3EqJ@?mqLe{QR7=2lO5)?+-kPoZfdZ==0w zP8>8RJ$_$WMZ)CCT^n(0BIYtZR4um4w?M_)&~U)}Le*ct-;f^{&?-G-1}NC& zj{vb4y-s>ig4rL1mQ)6)v-3UG5>2o)!={$mObJ6NQtEEB5HC z=4jfi;DwYU5mcSt)3nSn&~pbt{&bztT4{FDf51mE@ayUvs!YlPy0rPK3+WZ;e{Wy7 zXY%t02j-ai7UfuyMoGeHI&48@=lcu@;mp{xkXBzd#mV3bgc$!K+n%olw;t%IDpIqD zB%FyHvi)KTL-oAV7ro(` ze@=v2xh9=A4}^^QdiGnsJ+*#a?O3l}eEJFuCYnlvcUKvg*QR`X-*bGwb=|jr^kw#* zZx_ue2a3D>K*{wNk1zpfBCcTXw>Y(yKl+)mfN9}?qAE`&E|zQwlf${k1Gv% zF_zWX(=<eP`L6|J*c=1qg#y-P#F3%pHp zY7W$H9@iOM%`F(WrTyUe2?TIC1M<#C$!C)0i1TT28JjtE1HyFt6ETSOfBwb@goWfK zSO3`9Awu_jd1;*^n4WkcBj*s|{rPG3Go7vN}=CmOsf8bQ?2} z9u0R~-){IW1zFhwh4)|mZP=w)Z8*CbQ3i-g83gb&r)lYha{vVz`X1GLW3~pt8;agI z)Z8gaAoWi_9Q1B8xXOj*vAWskmS@T5*q(qp{UWqATjE>ga&VpGf1@V=fqvWR`^H%&7&c2RyT{C@c{i%GwS_&!e& zkld8B<(RATk)NS$ZYU_|O}nlkeO-*_nRT2xel@OG{TBM@jf)R&Y`UrLo7;w(_j76M zFjv;*=n0s^c$&9?f3EY38ZYO~sn0Y;>NhUL6cNi|$sr&_UGT>VYxPNG+FlVyq-hOA zaLzk{P$|QF#%2F&!D+)~k+2AIH=sEJ4T;B*V#di6J~QXD94&(Z#B#ur(*QCN7*jQm zz1(K^$aoJ`&w;#6E8VAyVgf4749aDrk!FgAKf*C^#A zodH{QXQ#o?zPEeK@}jdog;FxdT8I{2j?)U#272k?nJ6U9muyi|zGgv}v)+TY2{{|! zo+&2ahipq_LOyG{B+nrPEJDb)#ZPuwsR^>&HvK*N`uBV%`L^87qdL2GMmt<<*)&6j zFPGzCKx9*cf6n(l13lP9gD2LfpR3ftWaV{&anHllaZ}%I%F9dXUV7E`ct+cqr==ey z`)&*uFkd*SL}i#133_)9{5YvKZ0S4M+;)IW|4rHk)zp<3!tyTpM}JPt@D$tLFeCL% z@*RH6`1~pZE6#N)Gcdp!Ax=mwQzvv%1*mNDo|dYie|J-#mvzr}Emd8Jfu`TE;`aQ+{0K*U7uXAJT4vRYS**fTsbG z`l5f76HlG@`l?a#5I3EskgUs1?N3^UPPkNNYPYs83z&WTq!GpCa`4@$@N~dG13` zsOT@EW*+v-s2L7Azqh5KPU|K^k)>-)qM71oOFmIC)dFQ#OjHM>4QhK{ZbP8B%14S2 zK{QUzE;HEDhFRVwa+Rr1wfy-KJjf5?m~*^XQcA+2a-1vI$9m6=94w5wm7 zzk6zXp%?{S?M@9cT>mC+)6Kdmpy%i7@L>*2)stOCbs^w8^Sc}Bd2&cXy-ZCEebeBc z%cK{-sz5EAwqlo|!$Q-PEAt#c5#^h$zyFZCDnvxn6#ulv+D2TsVO>a?gwL ze`lWG)3kEig*7JeW(K}3Y^yN6Vx7}P&4ottz+zjT*#TSz2#WVwCb4WU>1w{srsl7X zZ-P4{kpl)rr5p{>&HYZfP3X_H`FGASW&?0~`TBmEnS-_eHP;5_v;_KZUYs5@kGaH+ z{&^)c(qpC!1|UEs+kA1(69AC!;sl^Oe<=E0L9S@T%v^;vo`S{%#z-$hXAD6Oe@zis zAgJid_PeH7@QcfA$|CI=qg>*g6adAYL9XpXKH(lGyAsFs!KVIdg2jpDSWgQI=~Ei0 z1LSht1px5YdzIUSn()Ii>`odR_zgnqG5Jl5r54bgxQ!sFh1p@s-Aqf$x2tihe+NPq z`f^u&*Raf|}8TxXLSqGq9B_gcvSp+E^!nlZU(;*_CkKIYeJ7}Tg91Rj7TGeY#V z$fPJVUyStI=rx`ywJh7$_m9^cMBC5owqviodkl;Evd8~+^XS~J$mwKO(*R>kxt;Cc zfR#NT+A*>H_=irT#5G~Idi`;}e=QxG;@DTJqW8)%08$I-x;&q*rFG8iCtvvi8}wC{ zrPd?e{|9HAs5FrWYlJ+9RS0BFOm1sJsQPveC|KS$=QHoio}+EPc%hMIQI(<7WEH@- z$8$>o(HQI(6>$BO_*ey!YFccp1xw?yw|N1#0QA#1W#u}p#*M-;jm^WF zJ@neais7P8LZ8}B`R16L>`fPPD}IU}RU@VHq@Ka`OFjS)NbgE50q;F_i0`ca}U@fAo13TZHF#1&I++GwW>`cAbX{#RRPLnh^@A(cHl5PIz{4 z9Nk=|E#4RJT<>tXonXu_Ya8c;uYe@aB8$9@ZYOMt?Xz@qz2=opdN|c)G4Qmkm_bxF ztXE$m-uNB@u80UcNFD|T3e8ty+CfgBBwMhocAp1dp#Wdm=Br{1e+M$Z1K#&|t_yve zufvA9La2FHyJ$GLyg8xK`(Bss%Bq<3`2orLw`XGc6*uJ^z#EFG-TJJmIiueWZ)pYc zLdLfN!GPv$9i36SotR4YDo|OfTUez{R9l&1OQpb92Bup6KopR)9ISB}5VtV7ymY0C zqt=&Qew}YeDaQkWf7-J@w`o$LjkK!D(2!1eL0qEG4g))x*&#W(-q7;u#j(ikeBjYQ zoy&y$cJ8J*&>QX^A8-{h$r|K(x+sZN8ZSg$K4(|)H4v!k&?h#N;j~f1@oTUli?=Fant&Z7wT~O$NxH zCU9lswV4TCLju)F$V5lfg%sRE2oT4{zAo}T3oUZ|$G4Au*}#u7FR6vhCg5a3+XD)# zoBwS^QaLbc7Z-`F#30J@i{ZyPuH|KIZriMd^JR@XXnz=X==s}jcA7Lls@|u1XYf&1 z8*ua8e{FrHW+?j0e{O2`Do%Q3goUK7;{-0a-v@Qsrp2sea8ANnl8$*y>gOwBigE~R z94E2)O4?(AJ6`jZHI~x0Vuqqu)TM3C4$$WSX3}ei)Xx_&mdxNGAaWF+Uj{5mwkhS> z9+V4|ly7yvW9_uNyW^x=lAaYZ$yGV$uDR-gf2(@J_CwNQv~T*w^nX-oI?T2!H{2xb zFsOpaCjDHdj)rO*tVoxVm+fTg(b+Om_N=8i|4{XWPDss963f5Mn|<@KO#FmVm7x%k zI5M4NMY0+rrYVm+Qx%h*eoEVpLHFl_`3)AqllgB=OWrhG3_;yc06;)o$o_xQ*d;(# zf3|lYd~F`5g+@ZPg3Q?dr0+R|WclMjNNdd5rfTPy7slHMt6Mn_`(tE2%mX^|d2P(n zzpQ|e%?oFb)7WYi>5M5dxbpv2GDqKrHN&ji!*3nth%)T*AYl%Ax1;4(pK@Zw3Z_XU zCs4Cni-rze)yQ0mAPlJvRu!A>%z3U!f7+VASsgeR-_*Mt1LXRzJYdix*YlhnaI-;I zwI}O4%OlmNM<1iONViQeUEaoFHK=82{byGkrp%H z2&Nz!07@?%ICAaQG-2jf0@i@MC91r}*~@g8b6d}DsCc4Pt$5eV%YXKGdR@mk83nCZ zPG_8>0X)r|RG!Md4))<`fAIU0_Bcz3^bY=QP$S{oy*m%u|>d6UTyfzkMhG%lt~pG~xjWVF0Emr|I3DwP`Cd zxNSo7h{BVcW(4wenzLe_YUDCvXyzPj^{uQ&4C8H2vBMZV0B;Y@PH_;eh#?WHxn#K~0p; z!{^B}aVkoRX;f8c76W=A*(`z%Uazkp3*# z@3(f1P|&xrzMG!Aa;*spEz5jA)S8$Qe4&_-lpY!be+rnK0X|UMeA%Cjt2DB_-Iu3k z3-ATVK7L{IMe66vR_=jwvmVwrXD8J5SBY&E(l^zj`aO#l4o5^sE*@fXA1?mv_EHCw z74O(R=B9s38mcm^O#jLTQNv5BeAD}bL*Cx)(N=G3`Z{TvNPs$@Y_DaqIjDRiM)hUq zPYtUuf7dHbl7aN08)Hq<$9*T>8QH#tz=2(I)= zu|>)Sc|`e?p-tIjBi!UE3Cosf+p~1JV83OYf5(Xt1G&2$BgQFKC+giCARt`~ZS6xQ zKccdjkZm2)VG7a81rTU3pcXL1h(LsqOj8$is}NWe24=khMSj4c#Y?lnRjwMxo5L2F zGiEZZfgC#D>rN*3byJ#}dArX7fcf{jCrdq=fI`dE(AE<=20|ze;BqY1+YwcM?9vop ze>N~bW3&d=0>Ea_S25Okx;>#CC#&E@o2;@Y00XAT2)Y$n+I%^tK}hOonJkn*ny02v z6Z_%JrOnr3VeMyIKZ84kqIYvePAi+D4k^!mQ~FR3Ujuvd_n_5%Ra@+CE{ojQDRTFW zx`R&+7s^bwpYxU$u5im|?s=K{EDxI#f5=_otOMLX+DL0vfPrL=Xbq}7$eIClzDo<* zR5<#rLS#^v!BEb`Z%+o0+Ij07bK8cAk0g>@-?8pG5GT#CX_Se~i@Xt>x7(9JbpkP- z@0g96XIw^WhquD`jmA$rlg@Fxx;E&}tu}5BKFt<@&cHMK`5@a{9KG{oKX2wLe^l8= zrE=#6s=P~AL=k5PpFL2<+t(`@$T!inOoUVispC{;P>kvNm7Qv==RP|cGyh9Ck4?5j z^;U0=w}o?CzNoef&Iq4$U8A;pc}IsZFoA3vo&tD~x-UdH#l~#3 zu&p5~>*nJ%EmTPS&a<4s_kHKffAN3$vG2tTZnz3N%Y&6^=Ni`Q317SYKKzrP{~i3V zANew<7_5GBmmK&d&$|YH@lU@N-}&0-S7!_@;J2L{)jv8JB1H_`kVO0_kRgD zf9oNc2+Zl`k9-{1Z{<=!wb^`$V?61CC4fMA)dwsZ?U!w_6~0>>mIda)SK$((yQ-X- zbm>_y{=C#lTRy>j&2Xlve~G@S>|W@D4)emlU0TnDWloZT~`>bSn;6RO`; z`mXk+rqcw9{$kTIZ3c$@a&7)w+-z@>v~RXW#5r!+%$dH3^2!-cBfBCKfAM!na`vNV z`H}IX6iG74=8QJ3+`Ck`81vV*kR`~;eZq;rDlXSN+&3TP@3Voke_$o3J*l+T{P^mP zo%LKnvR!1$qNJA3BD#hGkPZlTN<2EeoAN6;UbM; zbul3C z*YLs{uErA`zIOZlc>90(vpD(aS%4?qD=sJL(W5)~>Hq2-_~Gw=UEzo6@eYw0|K@$4 z!{7Pm{~PxA)-pNL;1@c=K)C4G62I`%KZrMf`*WT!+5qY6e_#9XSMj(1hu_8NGkb_J z3hJ*0$joA z2v{xxmJ8WqUr(Yj%M6~2g@y-G#rK$DXYK3DJ7gu2W5vs5z@QHKR_iHUc~pjNg!3E- zL#lHK`Hyv#f7dV1C*PERKarJZYIo+mnrwh!Gd?zf$&MgZpF4K4$lG8^yLa;UCQ^-d zxhGi3IC1fuD7agv?2>iLfFlF_xi)-M+mxdCSmFXrzJn2uZk`8JT|IG zvM^CC6Oq^@8fkLBqqP%>AE^U*B&8HSl;Swkon-}_f5&l&H;>h+%%+2Td|cB;3M?=xncr$IYE_MK4S~d;;Bt`nV?<#q)Xk&V0jX$V_pSms(5Vqfz`$Y% zh%8s+jIq`nc^=-QU+s^IVz`L|h)Kl|faP)kf#q7B_2jN`lT7j$vhqC`1qy!|ob#{k z>}1Q1f3aLFuoxuPdOcxWTf342j~+bFj7BSq%WIo#)(nF>-Bvz|q%F&BYBQ0DK-a$c zZ*qTYq8}O%ZT(vfLZ4q|xP*%@I)+dD%HP4IPdmO>YON}szs z3&@iNKmq|F5RNQ|v_&|MF<(W5Z2T@RCOCaJzMd98a6rm`*Ez<>@rFQHF2v?*oFewu zf0F}sHm7uzl%`XU`P0lhS4U7{4hDLriPdglCcCXcRZ&{CU0VYz&388IO=VL4FtBEi z)K@dZeR7v$qy(1!~tQ@@*>=LGDO$O z%h%03Z#UznO(%0h039jFjL`sytDe$Ie-0T@zj1Sdx}hk)FC6dcwJv__l=eI>?tvoA zPV@n!LUJG=3<1*=b+KU!CJ$UZ?VV>^%FaN*VnJ9aFIi9Z0;d8u4RGrO^S$J=Fz`!q z#mr)m14=P6MnC84x)kN)&%z;R?8V8TB>)%(V7XiXEIibM$P#B{z?C!ijHm`!e{DMu zjE^c%X2yCYi{o?^P*GkVKxR7hy(u<|vRFZ~>~@gWCr+HrR}_Vs=4&`{{Tu#aTJ5Ex zYE+)n7AiT)V~&ddkS3c4R{-PvKleBB%&RYNGk*fZ(VYdp=a0P@Kl_0%DZpjeJxo9I z6aOjR{+%y-Qt5ln)tBJnOP_`he}483;hV5w$N0d%_%Yo0%%?x8^j&q?aXj<7%ki6^ zxE&efM-Vgq(SP+ey#38Dcv9(m&ea#=;>(WXgP*x8Z^I=?l)SB^N5Vqv{w%pTd!+zN zCaU^ziRz+4g?Efu^Xm;N!5Lf(3TSNmG3c`)5Ox-WT!=b&!J6qXFhr2me{a?b*{MsL z$hDv>SG)#3QhrprxhO&(qiuT81S)8?k=sN%FrRs_;{ZwmFi2%ed9460@|wXl2Le|I zChS67z=51u+AV3%hgV%c|JZ>Uh=#y&OE5k~;ZD1jW5KdyM&ikBy{(S!5_`BSuw1+} zhmwXuY!`Lao@I&yC%#4*e;DdK0g{$AYnp*TBD^W+Y2P%)G9XLit&vgw08%d5@&Ph9 z-sX(^;X>ZtwYhK3l4CTN0OlL4PU{4J-95#7B*E_A5fKIo2tkd(BeH9qxw3kozc5|s z8Ng@IB0MiEH77OrmYaSmz|+hb%g2@Bw3oekLx@S66iBqX#+&Cre_2C616_Y{^-q%P zf6}-@=KWa?s81~xIT387XM2|RJ3?2T?!SoAc+CFhLIPY$(4Tzs%kbhGuh~%9Coa6` znU~`of8te`j$MSfa}+!*@Ujj~@igw=Y&YCU4Lp0Hj={T;EMBG#kC8ONxg zthBK*A+i``i*OhMmcxLZMZnH-z;Y?ul{?Epf6L!uA>Qp5e?tar`40%>7(hA_-mi04 zYhCc9O~CEou+fWqmeh4B^reX>tiyD<)Kd1-y5Ct%SiSZq<2npFZ69@#F8 zlXuq+T~#npz;)eqb?sLQUHWUfI2WyXJDAj`$Ap3&Y!Q&A4${%pIO5rS>?L7Ytn=%39A1E=|~Py|?2 zn_=SHq;8+im}>rdM~$ryIJISQA7B!y*1z>Qb@4nI9nFwwD*d8EY&|s^&D6)$JMk<7 z2u;ZK%?9Ca-Ydu^%BQ5eW%kBkG45-}v0A1-%w%ISfBJOwpD)j8og(xfv-hGL%>gP| zAh0;6by?;GMmaA+vJ;89!;Q#d0-3J|$akAO#edcBI{d_6{+{O9lNtW&cfJPe6PI8* zb^>vE1pnC&ys=W{KY1Y#;fLP#5{$<$!gS;q;;_X3?Z^K3lTB6;e&U_qj`7%WOgqQG z%LRVqe;u#fPBHNWgg}Hp|J^UZc=R}?BS#WQ&7v;P4!;lpoWMXSK$5^Wl+Sg@NA|%Wk60l^flwIYFw= zOdusEqFydqCeh_njZOc!Y8Q@GI~6}`fmCFa2=R)Mw!Zloe5w4YH3P9qTgi+`e&+>y zOsoDhk0$8WcuXF@BUnILRM|96S$HbY2qbz!`4pgKHb6rV&CQ^IY#3O<7iSPbi9<@6>0G9$#O3VmBPXn+Lc&n*|X$kl`yyWi&SWwOvzr_V^(FVb83*+)jd~ zZ2q=c~lJD0G&W$zcm>0)(rfO^pw&Npa$*$2L?^q4@^3GZG5hf8ztXC<>s#x25@&}Z}Bv*0^4Mvmwiup0xWWNyOOtE zGi}*@0g(3noRNJJ8VreC z=TG~1jB0?dR2u@~d=-pMJG;6o_b(NPRMS>gfL@;h9ryX9T&{rw4aEi14o?_b^;(zO zJ}XK^+5DZ=-U|x8C|FAKCYB0<0_5E0aW%^Vy9vWrKs$WM!=Qi$6(MTC-359+Gk70S)frpw|l4Z z4rmGX45i0ZjG52o&`DE2_n>K0UY&OaO1k#|dcaV>)3z_JIjKOLi<`+UnSU%R7|7S{ zbn0h94@3JdA!5#PQgm=q=+bEl5~EOkhatba(H0SCbE0Ii=8-y_jRxR@_%Pxb4H{_WFjYSyQPc%AJ8uWsixp$hYYc5(ry}xvFLnWd%0A8WI!V81_+L#=U8#c> zIr~`qqr${R!ColHrvq0h zFLM}ahS!=>S93v6f(0`GX1N$u4t9v(6G5Va!}uOK;Kfi7Fu$BKVAeZ9RsyXK$V!}@ zI;>(2WO*M$Lnq$c?|)q>7 zdUe%jiEmRCmCNrbDrK+&5BlnD9vdfC*ILM1zjWUD@>ARlmI(ebFz+fQ=jE$a$i|c` zYB%QG2mpf472P@)R^X1{^5=1Nc_Uy4y&%u}DAFVnv&f0x7Ffk;2DQ~mwPyO#d8T3l3DMnp_@ zSec#<2rLR>*sfY0!@itqd%bAp+&-yQHVBGEk*3X~&r^Ei!OtsSm#3D@Z30sO4+D6( z@J=u!+#QCcxq|?EN~!cKRY}A6bnoNF)R=lgV@X<8Tzt#s!z7jW`pC5M3Wp#-<`MVq~Y?u zz=T+1%9(}?1TE+6Lu`g2*t=PN;h9OzkwY8xz^y`;XMZ8UG+DZirUnXS`{t}1eI`sQ z0bP`vR7PGKLfX$BTxHMl0vKu_sn^WB^&Z}>anl%;_O}z6^JA6WBS(`5`|RlQS$LA%0TVUhcc59z z*58X_-ZdF@XhikQPf*{cbzV=|KmuaI%&PLq4u2#d0Z&!>KnbKiB?Ac`3i9$Ni6r{&5AB7a+pYbnuHx6ZTbTXRcbuD%HQ-a|6Y6l*JR zkrdqh(Qj|-qZo^rnH%}`2C^oJ;rl1gEk8c$!vgNR2Uo5f&uhGbu3wL8{1Zy1>e?%1 z=-wqK{OKUD&(Dqhd`we~++<(xPS@J#~W2UVh5rE9&2F@PAYa zM9}*=%Am}`7^G|$a22m72t4uz>>SJyHg0joQ-lN=QE&^mr)JR4W#ELtWU4a%oQbW{(nj@t3Rdj zQXT*a047(VIuETxU9^Gvgi{!8A9E_R$urf-&qH7Tx(VueUbDUY-dvaDbe!u6HF9rg z$vJfzVoT0n&$Xv|c&Y*fo0U)5U_$XJN~0ntP9U1{d;|2N^m5?OxfyA})wzMJeA~RL zwv8$I{lRktTK!2(NO!v-h=1{L%>M84WvGs+RFmHp<`nYt+~v8<#=$6wEr=;#xdLOw zBC!A^a}GHrLOva7wDv&PA)a}r+F%)zY@R?L0o8N&t{5hq^XhFW7TmtNA2E{b^V%{! zU4HDz*u=yfAx)YY@McEeTmh^Er0lz8ZNNnHOl{T^$St7EA*l#j+JBpT?6U@S_4gdS zU8C1RWQ|!}3YYOYzwz^=w0%saNV_C0a-MtgR@%vfwY=@gFr)Nj8);prAjcLVGOWC- zm(tHy;%5ZMXY%%GzmN3O0h+mmbk^eKv0_I48BqDtb}1%u|2c4FTY^4>mVjaxpaEC* zscOAcbOk7x%WF^zG=FD#c)rFkzi`?anl`_)d=~J}>+$UAtV2CNI^Qp(PpL25{t!O( zjfe2LJ5J)Cec}G}{0DEm3~zhUGw_brJQG)5dhDF@KP=UgrkhJbeZ}#CFFF!6i;9SX#m5 z;U*Dft#{1ykrQg({wgRK@T>EB3o+M^s^@@#&2-Ejoj$2fqUAh$&0&oDpcSO%S%42i z7#=X>0|aFsb$^5vR~2ZY*8<1WS@(;cV1u(0BskjI_zjpTjQlnML|49*1>M53ePR!) zJZR)fuzJJ)1`K8aoBJ?dX#+!daCtQVt6+6=1Wg*i^%Q6sYFW&J?xSWvRDM`l0n)iZP{`~4}YL{SLTq03JBTmtKM$*z^bTt zHM`~jg9C19ThGQExw!Q_tN=$=o67G-Yi2UhkJFz0tY@xnE)p^@>XB5phrRc}&&`W6 zzO{P9qH)oH&S$UCxuex}nsb#C8b0=wd-3=F!&mU3d(U*=zvq@m@Sa;90p52r{?*%G zfFFC?xqn>Ka#(ovWQ6kvSofdY#sB!hui~dae%A${=lsL1_nyL!|H7wd`_=>4xBm9m z@vr{UtMS~cFZ^lBbc9+bOuhkrQ#f#v%$G;`sIM4}_hz?S4*EwGuh@=GVQiWG)*06V zi;8pwe~L)p#*TFZrL3Rr_H} zpg{^Iau&7r4Y>^qd05w5Ws0`BZEK~n5>~41Suz;OA=`}gKxSPpF^ulbK}OkDy~(HG zgMX_eAunPA0ZekCG!c^hW3lMa#D1Y7`H&pSAp$Ar%=e*^?hrAOhC0nHaiS_Xg%Oml zthLLA*+dm*Fzs3Z;xxx6>gV=Vz!me9J@XfFdg*Mg`d4l&cl&{gcB^)E`(-A+pmnI( zUemvB+@VL5*%{k(i`%muT%|H8xTgU(L_uY&~cUSmZ z?|5?W61>oXfb-S{{_;m}!w>$-moE%K7bskGbU6#I>hPg^&*1z1*~jsFKk=6H&{Vce zv`}q3HFGxR-Nan$yxUc8FO*=R2z#%C6Z~*CFmwE+p&L$Fm4+(=j}l~5wiOSq1}tGl-9N;yTiP4CsFLV zP=4&|Z}W@uNxi&qH>Z&mFm+=u*MGy_QW24Y$h6J|$m?;O=6|IhEApPy z)FGdAmBd`6sd+X#&Qmk*jiD3az%+*sS6+GyfA()8|le>URI z^oT7(&K`*I7Fg`cNfm2Yt)ClZo!6P&Uy z(nt5lmM#s*viuY`qVTNg+CDoO<@}%1&WVcwE1r}DPK%Q?2lVvs6j?v@GWr0tV0ly#jL5;Ix{~~KUcP~3_bBVrT!~vKq@C|unt&sm0=5Muf(6P z?a=qW;u`$)$M3?sUvVY=^tWA$H^1a6oH!~zt3LLXd-0e5-G3Kw^XXNQ=6Ak$4_@({ zr=M532Zew7qp!n1Js{2pKXWJk)W7{)@$ARndgI{>Q-O3Y;g>&p8-DV4Z*QLelka*C z{?pe!>v7p~J52biZ+;GbXm^dbzU=CPmVdOj#{cKHzt+(Hv!A^C95j@3ZC7qD$$Y9O zSVL!~^a0(*Jp1`HGTq?~AyqXJ#VIt~Vgly(BWZ{hvBDANQOfWiSS zrMBu0O5fk?Q~7aK3$_MLp$)DLQ(4}SJ2y=7_?}cPW{(q6eUgwidTTkq2{;ss6mNqR zJL$a5TA5!vw5(5@#)?%Z&3R4)TPRFXmN0hx5IaB%v!~1R7iRmYWhJ9-3h+Ig4ZKwg z7YIQ=Eq^;P;4j;w(fFpKED`CJs8#*|CYSiAY)hifKecT&k9_xJSN}O_`eJ>b$82r~ z)6&+)`#FzA{a|yb8Q~1$zkuP7z4&Up=bbObyWVs|_uc>WLuj@U-*?jk_*?IIT*=xh z{NvyLdhz?MSD!d1;MW!WTZCKhJ=JKgUU1P4et+xTZ@A#V>Rd-buU`S+#L*@G);nI- z0IV8JZx`lQ5BY94U2%1oTtAy_$G*?YK!{^uZd-D@d>o_b$(n{FZ;ajpbiF!o@sZ*s zrpG8RcB|>LvP#fXhK8Fp?+ZUO3CL*K&J#H+;7iU16Ufq>60j0xTi%_@6&Q6CkX17a zE`JK_Y+yu)G&jFA_2@nC3F2y;vH?R|1Z39&IS-eHEkAozw||wlVI(NHaW-LoURXL# z`PXwKWs-m|5+Lo>+0))O3nMzkMo-B0-kC71XsX(j9Q{cl<~t~R{cQ>B5jzWft?#U0 z1x8jLJDQt&|0+P(0jQk7EvKxKU64Y67=OhheVnpZm?+;5NC`wL7)szf*MwXh-OMiL ziY;)&sj-}VjLhlYQ=puST+|iGfIXkkWY?tjrEZJ-K51*`SV_{nyTy&)nJ2@wflP^M4PY z5o1n59T@(*_kXqc{dj>Z0FMjKzV+Ty&9lR98B6H5-{$SQKJ%AP6HX?ax2e1dE)!lz zD^JUEyHGQAFJN40Br964+(BhNy^ox+2ztkdaHw?ZdIz5!T&dxLb+Rc=K#R}TuOp~%{~Vnv^-Vgjk|Ok~64 zqCa{odwX0ypZ`VWsIu)dogX|YXen1Co$m7Bh>G`l+pwj?gB=O6dRC1OFFgITR9?L; zSA%yQE2!-sy-=;{(|-hy61Z0cyvqXH!pe?1>$;+Pp35lMl8qS!PvSk^PF~gs%Cx#A zZ<9kj8CbhF#RAZSl8m?V)m$(;MILp#Tn)~n(VY2Bp&7Fu69XY+_7bRaWE#>~w{3dB z=3K}_&1vPtXIO;4(k55Y`m1+Ryaq@%b{Oq-T$SBrmxuFVHGf#WP*0eeQ67ScpF{ZI zXYOpCz5ON6c-+d{CR{M>)p>-EeEHty*{^-}ZoH@3GQ9cp3P1hvyYSN=zYG85yPkvp z;!nIV*|;4hoG-xI=9J_6fB2Ob*tX6LJWEC-pnvoXlE1LHGfAqV4gPM(gdiypyCsl;W%5?Wdj|Bir=U6Wp*W!{ST5;iIQ3Sq*|=^8Uw5BC zg|q%vIcKlrN+qIFX{o}FlGeoa9s5YG982R`Q`!b7>3=Z+UoQrnPqLy~9@M$KEngGR zsoEZ-F^Usu3>5Z-CX5R;l$Gh))W5DUS?g@OJ`~Z;$H-z-&XzytCe7FA<#rUbAvI4=ZEid!JCCjBO?EQs^Uky%0${ZhVE(snoX6Ldd#xz~ zfVaK;n#Z-wP2tSmy3xEm(b_8j_~M->n`iI2<&lkP%--p#=H}w9SD&~*KCrmpi{2o+ z-LC5akbaiU56{G_;3t3IMZ;mk9G${2>{u~{tba90tFMB_1JGf^eC(_81!H!F;5kf~ z16B>PE8>z#{1#nQ-#w`42}^)uACPcx@|D%8x+*4Ov}<`hz%;><%gndOxa0G_R*l9> z3nZ~+F$_ZyCA06aS?)Dg8Wv8#H0`Cdy7oy~u?cw-wnk8XmSU&oh;AxS&coSxrBYLO zsDGVOx6d<;efq2T^&=CM+6P>>l^4RPiEDoYov~fm_Vl9_2Wc9ORsJ2>w&SdqD1q8c zMoR;CzLnMDsxH2V~yroo_LQm@60nw68G(GXqT}Eg34NG2}Gn zA!KK+OpFjXm6J{B@_5dpt*ldW*h^3iaeo~r!fywgteC$tD1Y{@q3;w>qjo|$KZDEYcNp9aT>v9>%~G1 zsC;_AmDEY5(yh*$6<8P;uV42vd>}%A{1ME71cOMAv)fVp0DsT{+u1!2^^GH3r=_elZ*1||TQaIPBQ0X|J+oXN zqxXMG`}LfDnxKw#NkyCWzxzk^GwX=DI4f^%JXIl1te^p!7VsYSH+C^b{l^?J^`Q0m|)^ zY(0}azrXL**W*9`xlcB6&&AEf zcHYnD!wavw81H%KOVjV)yZM2}hU~}RcQbzHs}JDc|Cet%bpB}pWDXnIPJ>BEf}sm? z=H^8$us1C#@+!ByKdYCoQGBk86f37ZL74fjo3E9f%(;{!LGwv29Dh7d@O3$;o$9bT zZn5gEwj%m;_VO%OsOfz{sBOC1O=h2jq=bD_87>G)6AhfL1ik z0;LmbAl*7kjb`+4Zhu6M(wjtx9G&R`xi(D=B7Cda*6xiX_l~*Hq*%H3I%uCqFczc^ zb%XH81Q?PHlvUleZL=Wg(NdqPb8*<_y&)XqZ8pwr@YLEll)uTjxNwWY-W(&!{J%Vv zX*|ZZ>a0wM4KO9mZw8Z;#!a#X)YueMZ^euNvEPd3Kg)>qntv{3{*7ig=9MS&1Pmc9 z3O%TmgDsSRm*2TAwo74Y?1K>O+73AiY{;zzOGV;>%DI8KX@Hzx==qldfdA=-UUBYT zzRy|6HBVa;E*|=&lyn(uXxVW@vb-B zkpBMZkG>A~{(pn-#t+_jSrP9&w>*Mh{^)Io%bfI73sL!}PAJJSB8{HvResi?2gqjP zn6L=mMMK4mx_O^(%X$Ipc#x~_d6%KgH+kcR=h-!&>I>u^y=9y-uGr310;Z>pn9aYY zsrTHIz*;V&r{ziISLOIse0G!?bZZf?BkjEveT-Qcn}457GahDFre0;9{sN$yE!MFv zhXTcMBruR^zw}+wtxB7w1BA!`uDLcRwY3ShEEHYpsx@M6Qor?PTZK^}S7Cakt_D=| zVYx&tKVOZhZHT;E8Z4dD6p8&>1V`~*6ccdvV1r${oVUe`U{&rodbCVaK1FS_2y>Aj zeZ|S&nSZri?H0nfv*ql0L8<9%(?CzSM)%g88cs~0o-3}5^xn$pjC$?RG>UdO&6}uAYi*u&U!*)ZP(T=voDdH~ zz%bZnz+w@wSS+wu3|K7mna!OrsGl(bfLR-s=YOE>QiS|6do8ZjWFCaI9ovE^Z^$ce zE`*?vFbA&Q|HH5Bx@_1woF{p6+Nl!R*?>StVjHQ?qLmG_~-p80g>KbOIo zwtqg!bQ=DToa~zcT8Al;t(DssB0s!P@Y2)j#?`Yb^R0tHjb561q3A)-mWygQ36lQvXw}p-x$n0cL0Wg z)qA&&`+&3^mvaHycGZ?5 zfeN4U6EgxBQ{)8N5_q$oVlKc_hKNYu$?{M1M60(&b=zgJu0Np!EkFyRHt`oXh7GVe zgzD`s;b_gl1EnhO6#8?!`ORG3KUhq!&SYUf|9$-(EzB8s>9%3oYGm1ZPFsxX-G4rP zpCYC>DF}1m%eLz$2FIyb&`FCoiuy@55MvWHzKdYoc8KmPUKyP@cd^S2db^V`%ms}rQv(Q zMLUldS%(fi0QjC;9>KpqL>?j}WPhcy7y<$Z1Vk)`0gEA|Rr*31W3Z(N3$xBV$^?M^ zZstR8%TH;b{F&H_zwou$>dASQpT1U`%c|oRHfCJSO?G+Obe)^-Gv(EaKQ12HlN!*} zAgeBzs<5ab-YyF&D z9=woz6{D^*%lSKA0>6rBacKOk85^LRdvn+z@lbm zC37xMF!=ZFrcfVv^#{k{!+-nUFEw7hUvSY5e(A?v{iGVT15b?h>VL5C^ySxI3gE8d z*=KKkr~#rqgZ4lBvU72BasGYW3qAS{3ji6);8{LpCrifiFvvs*EJlz(00vE`+c_W; z;FeDoCT4%rg0D8%UcSV4LZ<)&2cepp32zR`ZlKXFp!)4j*&Rf}3|0OIPl?+&L1*A* zuCAW_)eN_0zNH~*OMi{4V^K`3;>-y;UzVki&9nwUvSu4}Y!pbdrF*{KK)&!e+shDn z>b%g18C*d8I@uLCg^L5WQK$dfU4z~Z%-&5bj`9a}I?5tyvac@{sOra|7)hMVV21iM z0?c--l^N}CnWptAJKsim{^j3}E+3b3|7JsFy#*keza>Jt>whq%wLJZMn-?C;IG|L3 z7#GLJz1yZri=3hztj`?{O&eLhj+S&OJ@PYG|4fz#CN8}%qHez~ukhaklE0}UA0M@v zhqD~g+L|+HZ01g`gPpW2>`AQ+l~=cHGM1PS0C?0IOMQr9%AY78QcOnk#;>yhzx+0b z$01z=oi(+K(tnwqgxUtBW@6F?C1c7HNS=kl2$9;lZW+$(t?@Iz`6c}H$4jvAgEwA= z|K^=9f70*L1D*iw)nU;U#DM(;ANYDf*I)njoA6uLUR<==K)}>#c@)PI_?M_yV`2}rl z=Q8zM5 z`ytmq?8i#)WS!No9Jk!iTFqx>H)g1Oo}zXDjeko~A5iGF7gdRhD7^zqjz6R}nsl)$ zpw+hVaxuI?cGd0R>uSGieu470Uauer2CRKtor|fJ^Wu&x2G%+za|+h$e+b|p+lb~H z&bB7g93awd^n9-^soB+n3)F1w;yvze3MG-wYek-@+EC|!5pZU2-96<7$Trb?e&+XP z(|>;MufOpL(QNg!R{)+g+batvjxO<2-~0SxOZDc{D}3KS`#Ao}>#oH!FF%2Q`TMsw z_EtZ5<7MZz-FglnD|wrDrv-oT#>;TUi6wsf)|0dM4xWpjv&cZ4BBn6{;|K&~|3VC` zr-*T~6%Hjvm5qF*k~YReAvgdL1|~opxPNj$OZM|kwH$TZk`QeHZQCiHIndl)cDdYE z_+&uP+Cpw@B{Tr2C)fITPRmo!TH_ZJ$_~KxK}Ijo7T-I;1WW_6>av@Jo#)0)%k-&l z($1rkdgL3bS6=;oMwk$i2DKp1P*<@e@72T8+Lq6{MIy3YghUJhh38oPWwj zcfu=?pjsl%E>Md1l+l<0G^2!7j@v?@)O?lg*j9P24Kzg}!rG$(w?*)ai{2!d8?SXg zyOVoRP?zF$#z!&i*ez1#=14A&n#;lMecgWCMrp=rT?|1^6?Wd+R%Ahs8<$14oq1s8 zlYdapKgUcAEcr{C4V3%-N~CChgn!EQL<@4+r_nLY>PloHi=*~i31D&hG@vDlY&H#6 z57Aj792jaa=9#;p=yL&BzxC-m4|IYseqa~=oVtHUFhcfIKb-0|?4Vr%v0 z)2n8y)xrxd+UXjVKVIRpx3=4V2le;4dUH1geT=d)iK@MdlNiyi$B1c~oPRxuoeGhO z>4BE{vNA`K$(UR{3L`J-VOKp6L5(3p%6}0FKoHe(0mvxf0yh)ke-$;G5j4dm&xdX? zpQ-{~_Q=bHWW=B`Tg>MGL6ujhPG!06J6SE-@4QtzTL-`W;qF)~xqpwbm-Km9o%+If ze-YKn=>fG``1<;nAh-13?tki0wC|iy^g`PPW)G}nFq7!BlZ#ORSkZ1=IwLK?JSVyV zbNr~!ovVDCD}LB812GUnl(@~dJ7>CWp0?YGLQ}s3o#_9o1W_NjZ$(i%Eruju9Ms1{hADDJ!2C2e*8XuU#jA09xH z_xLP)s&wGEsbK4WW9&3TPoK6z8<Un;uu<)0iP^LOwtpm=FBzR-ihy%nLUz|8@`c*zt)0N5 zd_SF?8Z||MeM%FQZJB)FREHM4<$rBZtBZ@5fSnHpszOyn=}0wer7T~{W6m`U;rmtXUw929uh zn{L4Oz506m{!RDc%Xgi`Z4aKsP4}O{hweRtw_be$FS+srUir*R@#5<)K2KoP2EYAh z_hzN7J%arMc1$QS`m}P%OvA6@&8>+TAUzR;Bg8q~d+8)SIh>MR92=8B&m6*k{#cwRGm8kZGB%Ue6{cWlx<$j9!q`628oc zi!`+mwQ*FYW9=783j!Mq*#Tw(J4D4I#tx$tCx7icpw^RWNy}U`6Dii!%aBd}Fo8l$ zZdVw{SGO1zFyN?0`N=+us`jbxN35GnF4?onj;fJt{7@c4sh%$D96VrR_{l>= zcz@QBfTKjXd2g+4HI-?52M*ZeLAL|Tt#lb=-jlm$YMUCsGOHOyCca2f*6mQioK8L= z;T-VG6Gfki`tu1_UV02a_O=&X2y!lHIB|4|?|IerPpF#>W6gG_TX&2$b~~s9I2Gc@ zE{rzeK(-2GSxB*6SEBJtn=hkB^YWkwlz(LmAWn-kQK9i-RP>lnBXhr^n<*-YYOR<3 zYU?@!Ks-i)2cK2cUKW&*9p4=YnNW?YrykQhql>)-X5GgW^*W^Ihx zxH2{1pw7>1j!e9_)vNOMbo#ha%W3NDg_@==+Ewg^=7Cm^9?JAseWL;ss^gYra{AZN z*pq)noE{BDjpQl2a#+SWBY)~iUbCyx_&Tr1`7g`uGU<29pLN>@()l7|Iv|1r0TU+x z#lERx9*?YTW!Kt>JTvW%8$0B8eKO4n*dl|ocHGRIc&ys2Y-8(B6y0Omy>{F=aFWXG zjMJhoE09s~w{BpUmKntsVw1e8Pd~$)uhq9E)k4}nrkqA2KI_;5e}D4gqj=sxI0k?a z@z50U2dDSYXcUz$(Uf^IJb&EO4sM>58mtQ+p5mCQ3V#H#&M!R0JKGrorc)mVE_#cA zLkqH*=f-p#pGnuBq#Nfmv-5U0cE48*v_Kh<2|fvFr7u_3**h}%f)GTbMG@JD5qCgV zolMSE<&BCZrhwuW_sR#fMTN?d(*H4{Fvd~b7{8*?*sBw6DSQfitEWGMlMT1eLvSo?Vp%Vqpjzs-Yy z49qxl683`HK$&jgNxCUCCMMo;f0Z3n5n#Y}O zK<=rQ{MeYWpLE))2BeXeS)U4YR}WotWWe`ddK52Q1}tL4NQ{wyqk(Y8{)GL}=DD?n zKdB<^SK51e(tm0nV@;(2#)Sr0r2m?8!wZ}HAB8^(=NpWF8rudivyEL%szRG(uX`)7 zo-i@n0bx$!Ln}M1D}^byIkDJvIOvtP=7Jv2W(8JJuKp2UsWELSrpt33+45;yh$1YL z;BeXowhNAR8z&pu3-FTbRszf!rJQ_2Vva@AmU6S@?SD<%)i1Ijb(>k8G!?U(6mOW3xqy$%)v|1qh@magtA@|oIlHKdH^5?4F$o4JG zHjw2}wQE8dD%@)@AQe&94AsTUDNHC&_my+2&=k4%HXXSFkp{fP31mouQ9fP2a^ICu zo`V&=RDV*|16=uJtpPcLtZ>|XpLM^Ga&F~&u@FS+BQqxuoFVO0Ud`hZ)jZ4Ss==PC zXd~3~SZpv{Hp-kS-|Agjpugm~PscMZJyvN19Z#g(r#8&u6tTO%#>rFrc;Mt2Jo?zK zq+5-c)+4Z7V6j8#>ZIjBxZ|vM`2dt4%Xe;F0e{c8U7REj%AJrc0Mhk*k<&*D4$65_7gB#uj0!!_L5UV1AGE=S;9u6-Jo)_ow>%H8e$iE( zafP-6I^*s1*%j`6=rq20&!hO%SMI^j-E=3ec$n~xE05p}7w=$V84oA-*T|sKWq)XS zCZ3);Al0vHcjW=4Yo{#$*0$hkCUqj{sSdp4($670b?97AoSN;iz3p8ZJW-)$P*2JB zD}sU(%0il}2_c~emU^KESMxzG&ebv_bi08%%wyAB$@G+Ss&vIDcBrfu1JE6Gy3i`YOh7` z9p_e_4XD@zMtbAJW$73xIf2~*sXCtxK#@zkXzDOgAt(bncl_cO50V* z7jh)z=N&tt)SL#^P=LeY`V?>UpGqf3CYSjZgw^$_!9e}oKyiISGD7zHM1S*Wmo&>g zkG2J_gVNkdz-uq1yb^F_18z!VP~Qc+EM5Un07B$+$`L5XxbYz`-?Ii0z>vXzTAUg9 zO;`QQ`Sq&DO9voyHEDI5mH-Y;E8il*I-lO$3&^MUb?go}>v;CaU{ z$Mc?fIllXKH{k1cJdF4J&VNn#`LEoKJJ%8Ky6Om)9*lN_^<_Qwj91zC_hX!^Hjwz6 zZXi8$@C>^bR_pOX7I)rZHRTDx0KR$OqfZ_&op8&8XVdpP9y+rj=93dn?Unuc&HGM0 zNtE=1Z@)5l7Yz~SqM>B&1@c14l(>p!lg>}F93ihR%_p20ympvY!G8pMbd>ezes}d? zhG>!^BXSh?5G>lPDauL4X_9M%whB8o}qMak?I|M^M6(6Z7867Lass$3}+|fi{(tF zFU$K6Yrxaoyzt+9c1|jrs`{J%G-l%i{!_0+K?Ebp+|fBRsf(3qnnW`k?YTNFE5`vs?90oc07>Gd;a(^mAFXOfgihrY%x!lZ)w$E#=O}$`= zGwC{WD7kE~=iY{?F26Glllt2F%79|c6YV=6%o2;hc>Xgl$KUQ}q3 zpxPd&XxkdJ`u42jpz~Yxd$ao=JuuUI<{lNQ#PX%o#k-ndonl;N+XERjD47dA;R2|7 zRen=1?m=mh=q=u-0T=VU(soEY^y!tw^<{aDTMd@$KGkx%w8AZHHq}dhXPYhmXJcGI zl=!sE^M6Ku3)_j1@8;0h{y0VjVNNhB5EalQfH3HlUh*k_MC#{`Y)06evT+lU56Jko z>nsR-f23!sC{G7T@^~Me$|ErccQ3esiZiQy+H8?+L~kVOiA4|8zdH5@4b> zX}7NaduhB}5^U|_j>xl!QW+0b{Y)*CrhloQ8tGkYw{u1p7gGd}G2MZh=7wp5b=%(NhFzBI^Gc(y8Q1cc0hoSw+FnseQjQ-~mXK=E z{0YH^=NP|$o1-<~=?c~}>H0P>Coa7$BXp6k0Rri0f_#3tFe}Cvt zy$nZ>?cg`>*~4>B1a<7(6wjNu@^FvS^8pefGp(X;zW5advsDOk~ryN>Qr4V(?EZ^V!@N*1Sz=K$x3v2FqqQB z>Jb-zkxdT+UA#`B@q?QW4NGu+ z?oWu?yx7P?d}}DMPW?a*ya7Dvrbih2Oby-J@wA%9h+O;NbmVq%#8s|G!F^6KQbAx^m^xgmc?TfspNWR$5SEyrDq zYVr?xTP1-g{mshuwz3DN2^pM?F>g7Vi-~$G4W$+S+mb zfnApZP9wUx?P^d`J+84u-8XDZADxIUKdPhDba53Se>crWet%}Gdjl4Xy!Twy13(GB zHkH>8?a8eAGnUU}aAiT$Q!n9i+_t@dF~NdSftS;KB|c_aHSMo-Zc)0~LqsZf3>K4oRY3|o`P6;p^zwY(_5Em$zcj@^RAz^P7@&En6=kPsm zehIF)@NJJfBPlut|x>TF^nrL_II(|J&mw;77smi3h(>Gt@zV#c`;5L zT|Qy7S@_s(C-K^U@(Jv&CQytB(}-dJEEaobuvqOPu2%S!k9-A}J^d1V+l|k7QrnMW zL>Si?_J8-V*gK11wTDHVun4m41OVeSxl5jV+Kd_clS&G`L@8Y$u_an80*FWeMf3t? z+dvzC3Q1<$6x2T!B~a4>$+=?43DXUQY1HHci{La{KrU@_|1$u1dpLNu%!z;HT~*!s z2;_FL^6_v_cG@Z-K%BK2Zz9L53@B!hr7_Zf27l1ZOuAUXS{;+{soTyAmtK=l6VDv2 zlX{6wY`ZvlNbav`(av-Cn2lx?yy*aEK$yRh@{nxVin}gR)yI#K^x3Od4K9${KaiIb zG*i}GsD(Rs-sNAW?evPN?ZPH{=G$Gi?($Vmg$-mAzy9vgc3p;ZcjDf$0Vr}Ut_Jq` zfobTtXgz;xm%3*8&-~jdXe{PPS)aV9v(H+8+e(|?Hj}LwFc6{olyKv>@C-98Rj>~o+DQ}?6_iT$jGUInXc`GhmGTwIe z4*uhPD>R4A;Q*+=AY3)|ZbG_x`Q-We1qE0kWLtj|E2j`7`h0ga;b%YaMSSk=vv}DJ zSK{JhODrD8q?x73Kb`X(hsU_c1JXPa*8@B1|Kual!}w z@K*fBXYU0skKn|y9UR|TU^!g)9o4g|3Ey~d7r*+s`|+dy?#uZ3Ke!81j35J7>pkr3 zoyLD+?=)zC7Z^u8@W^BM@8A1H+`j@|c>U$L=;*SzDELB${W0S6cRhx`_zPdc-}|j^ zV47r0FiayB>pd*@&S1HF28(eYVHz=x6F%^nJMf#Iy9aT(qwP050qu8F(SBiEV_5AA z_}f2=VZB0N#$phrD~6}p5K;mq9+wS7x%z+ff!w3E4~T#;$muzN(&?jQ+&bHD2lXd4 zQH=S?HktvfymeRReSk14n0PI;Gk6TaKnm&Vnmh4(zqc5#T%Y^0Z4S+gb&F-nwlF}} z43uRUkn*6b1Yv;v4pki6j`W}*q%F!~n}ytV4ZBPa3S{8Pn0iS4w;dp`Htm6~EsB4J z2^3kmbCI9VAGzVY_H)Z3GoUpv2V_5VguXpn4@ezY5^{fA9Vu&j*w5)UT@F0+yhoFa z{ZN2;PTT1%FR?V0!S#WG;rB8PC>dC>?Xi?s!N=_1gWA;cbHGvmEe@L`z-8_2pO=6v zmB|%di4?-?UwRF$zv^PF$GlaY{L01{(yVg`*Xgw-B~0$hKsfhmG` zMA+ZQSH5~1{>B{-V>)&*rX$CMzA)qwbD?Nd+5iY`aY7i^3A`-!P9v;#fpIN+@C<~# zGx)h*`vm^Q2fvEx*hPptN5EkL4(i46FpIBkX@m~EX+nr27VCX1_RnBvwTs2Hk3sjV z0~o`&kDI@KCw}5*Phx%K1g3wTqlm*&+s_fvqvbGsv`Q#8YZGW11zhc(#bWm?!b&xk zF8^##R2}V3<=2eRe>%eJ3FqpUnY+Ycw?$BVDFBV-x2dDp3Gnu9;#pnk?DL)}CyhxP zODa$ckTFA7_q!J^GX!^5lHk1cK!X~X6J)Cgx_#JOFs$*p%qw966ET0ymRA;vnJ9@D zLiTcR!Xxim8o;c^Px6jl6w%OGK41_B*UX&L7Qwe??{`&T4UpKyv8|BQJ`UtGTW~SQ zx8G2H4Qmi`>FU1rKBN3Q53V+WnmGVJ4;X3}4RY;{&#O1j{k2QJ%$nA^EUjazTJ6x( zUU)YF{k(FRo3E~KBI|#ZJ{bVW2ltu;jTinVL{Kx9{AWvJ8@mK&X~KjI-WXK4@$hB= zy)poj1$6Lz7jg2`KF;o~v0M!KN~4B$!a%^zB8ZD7iukT;c5w5fE6Dt{dZXlX*1ole zi@Gg}NiE+m_+5mXah5hnoDf#~0G-yy6Q=QmfUIEw@jyry)&zgw5Iu`cPFU?@Se?P* z>?sVprxDhBz%5Y>O|2wLyS7E+8DxmfgxRK=_$M{#Qkc$ zCwwix4ruf=*$?;HZ>3ot0#vC2tQ+!g%G&gj#7#~b(*}Qd9B48im{PUwF?^r`Y-tM4 zpepwv!%rsD^3=S}oJyKdO>INHKIaA#wL7z%_*S;5vH09}sc)-Izk9T#uLhRPRYP3> zxj(f@F=3s68_#!jYN80xP`v22Q5XEwW2y#Xa{#S(U;v%C^8l)!*3(($(=Kp&b8%A{ zoxU>=WmM<(eal7n!_EZ5Y(v2g+{;mT&dkU~r%VB>Ke^clPzj80X;$GmS-3Y5a4EtwA zbG6gsL~Sy-bm=?*Sg9eOrjkc*BHhX zmg63l;|etHgX0831cN{^0$5|%hZ>oW2?Pp95GCcaavhQEcnhdkE{bfU6iq0P+B180_xnD|0TTa*jbx#`UH@=MRl&_B8gc z^ug0vl@=@inlUz`z5Q*5s%Z*v6>m-e&oqCwseOEYWFREZ7k^oAN$VB@f8zjcg%-Kr z32)i!tnd?iVxqdItGLWP>S&<*q+K&`JNzE4Hm=LvcD&WSAM$2bDM|(|Zoj!l2 z#Z->9O&$>&D&gW&^7@fcdhdVaimUn}ePzeL(TU@qOM6^UfOXJX-xEZLKwM+k z=LC3ou>=nT7`BbHi8}&?e<9WmY6h5_1gsz?PN4NlPQR^3K(#Mv;4(lIfk^-Y#SvlL z2lmeZiyZ-2j@fRea+{!>mLmug!o*nc8UsfJp1|X%XH;|D#E;xc+HV}et6hJ$1=mqs zb-N}rdxF>sEkXc82C>+-c) z+OFC>K_xItAj|kkazQXB!CZeH#daLc#BUisbu_A6FCx3N*WVM-?z=@X1|NzveODKr zIoComkC$yju|w&z^{3bK-d)u#WgnG8%V!*2`hdu+roQ>Qp@N>2pZBC)*U|c?Qy-|- zPhW~HtEROD3nK}xdQ3=Bp{#e){{EQ{S#YMhr*yt7mmj<5JseVO7y5tXTE~dIO+=`+ zbn5X=)$h6vv3j5LX}9a@vDo{p>)YmAwr3w?m7(S*GxeEk*P?xGpUTg@P{d=@d~>eN z{CKMAZ3<4GnFlh!>^5L>KMLz(#d5xXW7QnCWh}Cs*$%IC_!yMayKMlYV-bQD6&;&$ z4FX^Y15TdV!?d1o*%5z22qJ5~f(HV~E)Uquc)j7Gb-$gK+L#Uu(V8*9lL%yM!OjAOrU{6Q5F;=WXc%O52@(To z^t2#tsg2-jCY>@;62DCY$rfM;q42$z)0(DejliNo3bY3hi5-7icjEWk)VyjBi-1KK zz+iP8$qo20|0w~J+QG;m^_oK>1|oq%0M?^yy^e%H1BhgMl>%Wg1T2ODa=MN&sE?%F zYI^@$ap#k@1(g#hO>zdJZ1r+vJt)P(OPn7ho1@Hf*FBGZF{p>E2reooD!ayPS=wl~&$!s(!(%+!QCC05&) zxdquhA?j%>%SgYf`uXi$=|54MJ zprV(y=5Ox1(#rmKB30*SD#!S6K{D8tA^yNj3+2X2%3F3i)}!JF&HH)RUyhySAZ{Cq zkZBGC+;M-;BOpZFaQP8nAdDmM;!6XrIljO>XGRb)E*GKA~C<3guBnO3bS^-&u1r?Zm=4q3h-JJCk(`T-~*_fXIGGc&u1Sw-B1_IBt z^*M%g-AN#XA%N8bc|JB>RST>dnzga`4lA8$Pvd`Kq^<<8zz}2)JB|@F)hb>}$(R8O zwwE8>C8o~*i{AA}JOCpAnv{Q#%(BIRupAWNh}UCVEl%IKZHXGw+1_mf_ zvb+KodIw&FdOnU)UkVPed7f4a4acxpCwCJ6RK}H)QdvNzg;$!Zl@u?^;qs^bV06-G zyHkIU4mGUrrfd7QrQ@KvSPHOy9(8`yd3LzKCXj3FWaGlND!TM+Q(g%?03>a7(ij!> zQ@%qJeExn5gAyP!T08)kcvKjm=X{dZl%Se+O7%~tI4yz)l?3$r7pifq-PYn&!B+PnECS)G%TM5~ue|}Q^)$OZX#Dr{U%!7J z3j$tw{eT#NI5Cbd7%#ju;NG*0>n~d1Ctr08|JxmF+u8+pGQK^ zm~^|mtTU87bSHMFJQcM;8Il2>d9+jXZZ5-*S(LBxST))R6jejRPIZ6Y2+KDfl4Cd5 zkg1K@qRPQc4e`E0?zx+LNgK!!#6f>lx~c_2(I5WP*@WariCpi9j_p!U)`HE6Vf(A&S!M+#oDibsE%q6JM88RaXsx=FNKxz}pLqJI2)wX>zaFa5q5{y~k zX2SGDOx5x}h;N$g_|G*~*?@DQ8K*vN*%tP?+$pHaNJ6Wu*XBYcA;AG*wz_{IGwc}< z*p|0Ny^*tP_>9*&CSk^h&Ay_^zFQr8f~MCl8+=EBp!@m-Va0YMgnmv!+Wh!%Zc_&i z#4an(Q7W^Bfvip-ewuNGxS>HccOcf9IZ_~Wm6j>tPAtk)CP z(*)|$%s6sniCgY?5MQ|YUcBa-fNL)g824mX3W4zaO9y=7zJR~}%A3mqyBzmPu~QYjFr()FwuPs09z?X-hV#K3=bErL>MhI-n6^QB*^=|o)n~RnqsVPS zZ;-X=Gm}Mb*p1so_IrcCG=`-g=2Xq@%Ih0r_vo%VJ=vhtZBlY9h6!c$N2Pa8v7;{o zChw<+@@LHLAkQPrvv_~qPXzJcEsimz-$Nh_3`8e@%9Clr&{@l2|2`G1;46U@sUuOI zbY_g{@p92$sfl~zr_=riPOeSwt1^o0drW>V%=>97@qWGq!=k zC_yX^XyomMk1NcLZM{!sX+>|`)@D!NwT3pZqcrFGhks& z;*vIC&wmF4u>&j>U{K0P%SyH#z3o=tCUraYc)7*fq$RGOI~tjg0sc1W{X5MoG7!WX zG1;^yw;d?wJXe2t94OZFxU$Q#Q(LGk@V>-W>q!>wRCCL$`4VLz;mFPcXU?whKfnKr zSn`N>z5E!MBIpQ%_JJ4)&%R{98?QZr=Uha<$oRG^0^WaHNW428S{bCTGY=P;mA3WS zk7Zyn40+=F>nM^iNC^3W6FE;p*xIPRVFEM2rq35Q=G%W>@o<1}Z0Pcz096L+jfS|% zyZ-c%XA>9i4P2$UkUr!IqP6Mn~UZWi_;adQ;x{aIG z5XK&i{xW}LA78z3=$`qNY^{ImihIG`glh>xPs!z*m=VtTCoG>l4TeaNZ zD&)v*9XHYIg{a@knVUZn*IYl?wj%2lDFDQtu-MOIW%Q)O#tT!+)($;bd0vB-Y0Tcd zIi;Zj5cYVbe^v_a_jw4j`A;Xp_;`8^dvgt({3w{g_Fs+{9 zCvW$-kob9`CHfN8rEQ8Ii`4=4ls>P3dVWAId?<^UAB=qf;wNPnB>8fvp)#P9n|hUCZ7s~*CZ88eYSs28w5_F%}_?`R^NpIF;|W3?3V<5s_=1* zVXPYySHeb^jM=C}BE%>{Y>E-%D5t{2>v>FcSy~U^(^jPlIZhe@IMC&diji#Ff@;5r zknF!&kcE_2p>m&VQ$Nm>$%z1V?b8JWHA=d8~NV zaUt+S)qVhydkhZ*>WcdB*6tBv`cQw*g_=bK#-ILkDnMNrMKL)tAL!1k}e(Zl|aJrAw*Oe+zSC-nRApqFhAMxPHU98q4 zI06svGZ0vu788J@3_c5-Ai@hS4OqtsAOZ!(fA*3Ee)`mi2hWO)xDUlnN^^htwfJ{q zW-MYX)yzFx2k(4xZX2+^ZX&>|^xE)v0I$AJqq*NL^PbOGQ}krO#zf}=uzUdLJ;D8B;8)n&w*FWOIzO?oZAQ z!l`ZRczwZ|1y-*N|4Gg3tSRffPuUw2w+`zSRx_(CkZSGjfx!TTCnvQ+$d3|3&=EkKPUDh_}6DfoZK^>u5wc8*nU)U@*cZ6UP03 zt1cSw=U%eJ|L}=5jQ`r=QocuU6u)5EG(~8TF&(goj>ESrcKhBR;DzlK_vZJ*Xx_gYtv^DVUU@V9>{R)+hR$!hbtIxIN(Bj(WtW<-DtRcu26If;G2~+1`AfXbEJlt?b-43HeR8XpV6?7htKq^q9Od}Z+Ew;e5i^@Qx|-s=Z3erDGeJs?n~>GoS! zzSRI|?tSNR!<2v7HC%5#`W1ZJMjJytrZ$r7=MK;Eyn`2UHLbOPtp#Q;k4#b-rvuF9 z+QEvBkn!(){H0+I(|800TrxL2C@5Q@9zUCaZ!Rcle^r~D&N~uiHkz~{HXiEnnSXEI zIVitV0o;1==LW=FsOQMMMzW0O!-UdLgMCJ{gLD&bMT&nr%RkvYGai$QwRyp<^HO%7 z2V)Nb{6=N@BeoE^Y`rI z=Rf%nUVIJVy355q5RL=9D;llgvIsgJG3|;r>yKR*@cY*;@TogjsXdZxU_eY#0HR6h z6yj`~J(z#vJZAADWq(u5UQs9YPh>(VMiW*u?gNlPkpBxr-M>1Xzv;gBm&@q%*P%kq zwCpo?ViTQ3cro<`OBFF?vV|~kA#I(pKLIp%s>gm-K%~pa>vx_BdPdY|R#|mkmp}Kt zPe)ex@Jv}7XrI-8_sZn*X98Jyb?L`&8vik-KO2Ah)0F>WjF_g$eNJkmFNXTl6tgFM zEhGDAa~Gn5(uK*x5HJkn{^a*!As0n22GNEMgLoDnLQtdqoQD|jXR(-?Y9kn7H0@>2 zncFBD64+CLJb&lmT(O#eqsb!l<|H}$t?pLjTqw2{oPhAk3%`}<>2nXVHlitD=DROs zQ=ETPLh)B>1h>s&2JAA7!OM4X;0Ny**gzFSPx3PI+)&?bj4U6l`QZsH$X1^STNprz1;p`^C4=JMb3V^#>st-6Q*&(IF4e2wP`gd{o#Kn zVQwS8O`8twIP_U8PODI^_VbTA%^Wj*{A|8z^k309hnK4H-OZ$!kTa#H*PW$8F<3X{ z!!F7;WiqloQS2}y%R|fND$k0s&C--3>$lv0eIY$ZyG?#w9c|nqwXtF4wZN)JUmEvL zgXCBKel=Ad4K_n%`5dC0M3KoiiP?XH+j5kgN)5oA)+`%8lNO)HgDpOi#!R*9a%$ZC z4VCRWuLvZb0-1%7x@Xq-1?LqY*nxor+Km&jpk9B*{ zI~q0gVcUeub4D&8@?Iprj^YuNoj1*e!CI{wB>sF3N=Rk{1 znh5n^?1Yv9BQE-_WD-5_RX=N#)Y|8BHeZ`gJGS-cO{{t%Z3v$CZH#}qi9sJwM6+_P z8GfhWrl?JIDf24YD9-ICm<&ubPfJaqUlARUE zBKIui>`&A6w<}vs)nRC>nTHqP)(3O>HO#V=$F-nI^;IpZFOHFcRMKeF#mK;!U4&Jd z{X8{=xTxUAesMz|HGNH0`Q;s$zWsE&Q`7Y1X+MXZ{x8N}fkH zjc6{TbQvVSPo3Vw!>4uu1|EFm3~s;k5u7->#4BHPEmo^3k3&bl0HA>9J?nCO<6HOR zuG10Ef7$>{jBtNZ1RZ677!(*-sL4|RE`M6UiK7EfomCB_=ZjUyryr%v3+Bl^qc=mJ z`B{qN8oUQ~w*_E%`%zXRX7lB+Zb@4qsOoa95Hs$i;(5N>LZ3MtP@L}bSv9)yX;Axe&6R*~Sz&zjjO&%}UfVz>S9X8rlu|wtp7UuJJ?sUXTnNv0vP7?UI4+?D{??h#E$#*xhMr>)8Z7-hZM#f5zbP>;n5jN3dSL}W8Z0yyeI z+%%wm>>1Cfd0q{2iv}#dx2|DqE^!-wt8UsbzN~*c3O-M6_rcRvt%7Fj;2&F?*x1Nz zUb@+^Ey1d+BJaAgwR~cDI?NB&6l0c$Mv}I(+G0DyaUBc8t#fE9yIaK_U_z>cOLA|eqc^DN&0=XxGd@orH*IJeL{ZNpv=b%Nh| zOwWI20N8fG%Z?Ve2Jq!Tmkj)GvpPL}1PHC&Mjdq%H|o7}^k{kkDw$CSwOy%b zbv;3kY)O)mEIg|ugo_~J^)>4V=kJ_v7BU0N!N^$b12}9ME5nzrn z#p&yu>xqNFNHrgdD?^mYcYvKdsTV{wgF9eO)WrHZZC9*l-O6xK89kor=aU!iQV*iw za;lH#1Lby<|6SL+t`N$11!LT6igrtf9Lj^x7kD6Rn|sD zeyR~GjL(7OFjPM&lAWG$dBF{_YEq^l!zI~00xQi?8G5I@>WbAGJU6Bb&8$nox)6~padBYK>|W_u~mOmjRUT|kA5B)!d7V#ZakZ2s+iebwr3y-zM= z_D)H5i(u>B{JmYM8L=7jBGt$5oE;pti0DCqqC|gJUO%szksQFxHc%h4c8=<_N;}UHQqQmIy#s`;%&7CTG8_OYv_NhQYrD%qid+I^1(;^8BQdJ>WgJc; zOewo`xIr5{d1&sMUChn1x*zK~-5GDQpEL9pb@xZ%w{-wnX2q%9>akG8^}z|kyjZ9j zih+CqyE*bqiS>Ugx#8~WWeZ+L1}T~!N2JS~?c#Nteq!epL?as`nDj_Kxa9kF_t~&F z?Qkd$09X~1XMKnZ4BL(*ozp}t+9d-!Mx)KG1ll!YKe+tDuV{ZR-!ZfS7}>~N)049q z>oj*!cIxx`gkx_E>0Btb4t*X6jXTeG9k|lAiP1b5OtXK{rWhUhxjZ7qViB;rzs72u zu(KGjv$McBjtGOCNL{Tb?C*ZvtXST1UsY80csmJ6zU2J>%aP*OkxCrxtv>_LveJ)9lqN=bcy2(w-t?#6aklKQYCvd-Fw=ti`U@qPWiYgyfDj#zwOEwZsNppf$k6i*-;1k%`Xdc7VC#30jz z*@Az=G%D=ofg^!Tt{BfEU9jk!q(K)t4ipJ*wJ{~_AUmk0Whz(We)lEUk=r@w;}N3) zQDA9TzuK?+zUb?E-u1LHmUV8o&P$hP=Q-E!Dt^c@4GWGj@o4fSI(8}5EBVmby)}O0 zLpR~pJ0C`zB0?ZM^O{TW*4I22k36=EkA8pVHavW47km3_0KlieHsKRrnefh zp(rw*b|m1{&t2eSUmr09a^B@VFW8{PVzw)27dx%g9aB9-`U@F0*?f6T)SRn{ zS}2-UjsUP;yjpIP%cQcs8%jU|i8r%>7xMJ^;>%NyW+!ugptTl$JqBMFkSAVtzhi$w zV}n5I1)?+Sx z=UrNul&&zmmbDFiFxLIe^AE{@6?qzrrd|g2+|kOt?{=cA0v;d$6Tktoc+1;^dDwV9 zkO3SOh)p!7Z23`eeBRGR6Ba5XKtPPh+m?AAW;3NY%bp1ILptI|Efei{U?9%i|_peK6l4HUjM=!Ja~%njl1{Cwrd1f#gvhj73VI| zYXkHrBJ_;v4+^DYRPQt_JI!kytwu}}#DN*h-fm=dex^rB#bb6Xg>agjq_!%QoahzK zB-LT$5GehH0JWt|GZH%y%y;VjDMAY@^*O8F>(UL^A6Hwm%%l+0%Ri)1( zvNK8f9=ZH0((4K{a&&VeItRq4$}34uGbA~T=xRm5~-#e$yJP7!}i@D-X$-(TcNsen&IBd0!T-%}O02fmEJI(YsR)8cWi{O#v` zmDbC5HlSdn=Y<@6lp>EZPD%G%nXW@pI*&YT?gJw7LODjGIak#&jgaPoIg=Fk0nU-- z6!XboJH2OP-4;{ic{e3|lEw`Kxr=FfXB|P@X0UTfmgoxI{eKaeiM!z*})z6p2Syg zy&t#V{SY2{_!NJ>?S)t3hU+c?nDOV{vV%YQO5pbU_q7xiShL{D+CoCd$i2s$<|eYf z)e&GmAkN>}=Mx*|=?wry#Hgm{H02Xvk`hQ$BO7lw{)&np)I9Ql2loFb4Jgs^U6TqR8PaQ&7`7#;>%q3u1qByA*bNWg8Tqb)UNSX!ETar^%jO zT(=NVn*CxelfXsN{WarNFTNHxKJ#)A5soYa{@@FD;AzKqaN^hw-usc8@S7jH34i#d zJMmqwyAels7P#?QPscb;`1SwzMcn+&2l1?HF2Rd$xC$qZ?ciH?-UN!k?|u?^{tZ{* z&98sD0U!R|#;_<`RGkRXppb3LbyZ#sMvaTWQYfNoOHz9`d^yOcc?zZ8m=aE&t5YJEowM(+(&k*99FQkkX`2&v?6p z<>v;17|GZ*r!*H7RcCOOXNQ>=W&8bUa_JiSpxV{a&rs>lt&=tto#U}@PkW_f&BRT* zR>fA-RlYVZdp2oi*TQLT_*!^?#wiE&N|k|>YcmSk0c_hk z8LLg81biwREnjBho4q>PoF|vQ?xam~n#xC2-SdL5%rgxO(^%WKB#^XPo_AKo>+X>OECZ7T zRb#|eS3C{ZJmYBqfSu)l&wu@1Ow8C@tq~*eZ7;Y67oFI_fB49k@$kuAoIJIM^?Jf( zmmI^1V+$NRx`T&L?c%YsEBuW=dlb*UW`PfV`Z2uqHP6FCkDkFNzj!D9%AbECy!Vrg zuid#W>$?f$RP9_j8l7wC1H$g0((Hl4DBlXm;w*XkZ!+bU-L4cGjBJ0EDtoDkkn+ znLS}cNOIT;>)H^sg0?KLSBHPOXOzBXFyi~5S06`T7ijtS_T9%bAmW8H>vx}=UA(#; zy>g6^_u8kVJp)z~vN^tuckZ-jqKPvA_MkR-ut#p5?Ditlo_(AFpy=S3z5oAJcXd6# z9aa4|`+16ODYm99LIGo_0tJbM8;ub!OeB$S;Fs`&_yxQ)F(xWk#Fu{?VvuM^6im~Q zVo41G4Yl+I=o_>>=lSpD#mrjkx7MuL&;QVKN|@xF|Fid=m$hcr+sv$4<9S8$0R$BJ z&XF~0Okf@^<@fRqWReLw$8a*Z0 zrEfdxiQfKN5oAMB9pUt zl&$M|Wkf2u3ATT|p`Wl?8$7LL!fv$vrAiHmQS_bZxX;`-%tI!$bn?sLJ`hZCS!|Jp z+6#uk!MG`d2U&idQB>EdcLxUls|9@VRUw$q#c>GSUJb86t_+s(8%`}Q1pc5M4NloY z9VnCvqtp$9^mYLg33xKJ)S!v|$qWhTtkt*UW;|>q8eD&egCZjR3ar+JH2Y0Pn&yKA z`kMRF+m1XjAAZnxdgTzBZpmmLME>`u=EJq8-wAP~q0O>ZuUyIRHRY3*YFy^M7mW0UPtGfYRXv=_^m+3!nQ0 zKL7h4!v`L^50@7gc<}yv@y-8v9?!q@8vgL{-^738pLhh{eC7xE{_{8S#M3wNsYgGI zyDm3;zTuqv)h&4U8nkpP~4Kt zf}r}%b*UwW20t8i8qy8Yr*RT}ynm03Qm#l}}_-PykH-vcsc8f^$3 zRgQnxZaZqlXQeKXO+bKV4}Delo&ZDDAIKh?;o;3Q=&G|#=(U}Uh=xY{PVoZ6YXH!386X(7j*KkN^yZSaW~n;0r3XcnGUF=g@S#WH?53Z|QGN+2ZSp z-uo`gk7`R&>t6ZqFs#fs3&(rrbDOB`@xAecz9LxYq&Bz+!`7O|B2*=*bYT-As>IM| z9#q3Y$RHZ9hz@e|Hh5xUyt&7^blj5SmVo=*$7X=hE(ot&xnYG=Hp@f<*4xt6MQeXc z$9l*$YR`98Hb72;ET}zOt&-TB@<|x~Uh6J09NAa$g`fKWr@fh6xVqZ$;*Vd)jTfKotP62Srjk+`~_`=qW{rIudh?BA+QoCuZ;W()c0)=Zjms zGRBD4$~ATt0@GU?R%ET9n`H*V(OzYkK;nz>;!KRBWfyAJ6|x(TD#%HZmUw?Ap<^&+ zK3dVFIEWKp)Pgo{9j@9C`pNkuDFhk=wvGbcnP&<(DM+n|9+!6?I-{=%=H2l3Z5DJT zE9^&7;^17D(>Nmu|=ki$mGdI@_rzFcm^ zI{9558}7Sm#jI+#UdHQVnel(qe7u^J4TYA_n&pF@C{<&_Xk-_^J_Z63PX4_$&o}XX z^Sn*i?ic}n^|}Qu#s&ldU0g&w$)Pa*G3CWIe(Jm#$f7*IuSNo2eS6BU>Li9_UuTFob9&}j*Z{Ivw zou_@rjT=|E*nqEpYsW_(c>urhfd}y9)6d~&Z{4u==03^zNctS}9bER@(k~AZy=zBC zR>gepJlVwK&QxEt$3tBS=*$dNpQXITcrAShHOoAG28I%Mc2D&<+i{9 zJZ5mjzK!s9zYD{a?jrPTm0`yMiG<*RA!PUoy#NwUSqW=auX7Tb8K!~v`jAP{hAI;? zU<$=q)gfI?>fbtkGw(Z3vT~ha)>U5$BpR4*+;L~Cx4?R@&)a{V4OHndiP{!X9R^hJ z_fqa8UE3dLTAFyp`ZMoK3gSu^k8hL*u`=R~0?+vOk&em2qq-!}w#)qfW9prvo2 z%ef30f4oH)vJJj%6k>;YOfnoaIJFq=W806JyM4rY0K~fina8;)9Lu zr=G#>`K8_#1@-sa8k%#cy zi?8A*uf2tn2tNJWkD#I9$!|aBEiTnl?(F>C(=}U!T*H6NaJ&Mt-tM`*>1_RX$J$zL zh2}mw5Q?j|8u50uqF%N+{;GrlRG6nN9brSD-(}}9jFbtR!`1&HShG>lMq9Homf?G$ zD_uRV(dOHfqE7wVhAZ5fma=g{0tiUMkT3tP1WrNg20~@{RJ@^8X`hL~zZ52uuNBvw z6)T+ElhJ?FEFaxrIc>*q{grk|xv7md!A5m5a#L3>`iuqtWccNF$PlrhrcPNAAD^km zNkDV}x5EHdJ}D3Z>{4RrR(-~+@>87qHL{6}8?pzERA)bV+J=I5MIOn6XlW8Nv%+=U za-qt2t~5y{&$xUxuBvydvc;!!Qf)8P8C&b2AbfvMIdy1*Idj`9NrpnRy38`*6={_( z=~D7Zlm%Ef)!~eeeXK~tZqP2!sUw;!{`OjzY-RE8&kn|3^ z_I49lJ^&E3hkozR&-71^nOfU$dC`?+YryHWcDvHHHEcskcflug9mwrXyoI(6 z!FX%!t%MDb1)R2(aZ@!A{0DB?z^nygYZ`yp)I&a;_C4!wn=^zNcQC$K5Y$Gg^3itD zYz*}>VvQ@-VaPp{x1Z?ya+a$G3D7iv>qQSzx$lCjQ$ATV*S)NB{xH4SE;d|l8@7wy zucy;)ZJtveZSlUE;A|VV(WZ_`575Ux429)+CO&!fp^x20E6BHrSGk|o)EzZ9BTFu=02gn8!)*d zSjE8XagETIZ5S^*Gf^0uO_QVxYT%EF8QZS%sATd^S6K6f_`V| z7j-Sq&%a`JEO<(V>C&i|sN~}*!jfI-9C1iK7U;BIwAuA1S z+t6gkwsohJa^*{UIX>NGi#WJG)>l8>O7G0s{9sk-tQmNIPYQRe$SDwU%dV;;1JYvN z`BiOL@4-F|F{PM!gH>>f8 z%4FVBTq%a4FH3os+ggm1(07_3g?e>Z?0N3T{-+0i?ld<3o_Mf;W$J%-qS0#%3B9-0 zR?C*@Iw8(*S>PVmg5r+%8i~c;sHNww9Vkh`adA6v0OXZ*7wCbq;0zQ@Dz?br7-cBf6 z4$jMpM*DxjtG6}mGIuYdlKa2GW9nu3t)$QXFalF3o^7-(+)rAjx{#XtxeEA|$GiBO zjVd*uCeovN?3;h$+NNw#!MnVOZLgGk(Y9nf5=;TK5KHf65p5$4#I-!Ig6qgh-S1fR zchs+;N;cM5CT0FjhJqT6{JM($3J`D1sH_a52#Y_uZW=N_WSaX}1bF$CE4=*5O?>0O z{};e_9Ixr#LXx8sO-T5e5Q)eZ_#o7OY0m|cb5i9u)MsnMvQ*}OoE5?CPJKJP8G^qY z*YZ@%#(zf!6p=az@)>$+oreT!%L9JvY2~0EeYjjW>hXR(dE!1_edg5ZiB|~NK#Q)v}Z5hab!5C^?rzW{$#t|1yuS(vBx0c-(^PZjj$HjD`VEb&57OQ8d?V42EJIhDfyn9Jl;czE%$Yl`+5u&GmPtCkg&~Az23Z}|`XY@LQF4tMf2$da`!})6P zg^UV`S+tJ?DE*{Dys*T-x%_pBCNDKl^a{<`C!L~xkR^|jab^5b8gODTN8^uT+rjUR z?e)dHy6t;_%sFd*&RCu%f@R4dam5!uqW*X;8d*IkCbQ^N8$=HnQHZR(HwErF5@ zE9HmQfc?~nmQv2Jt@9KWh~Zc#QF=+@6=St-7qqp+)g zL`Dl4TBcV=mc}kpLjjeBl^|Tj#ozmi8G&u(q9V@p96oA2rm*$SKr%*Dp2?{zF$%!i z(?E=k`Z{cP8V6RemC=>TPS2I0mGPTtqONZqYqfFa?-OCBcLV?6W7ixvGe|RU0+V=Q zqdKsb)F>+~>~p3@E$ja!FJGJZ*xirB7) z;vHR8?D*LzTj+*?!sX@VMc5iqrDw{4>Setb;u%?kED^F1vFh}rZU z*$SVPAdZf+2*#?UycIx;W~(Bhs!Y@%I;aH0J4=1*jE~aS{TNqMN8Z6LeKrGs@M)OI zmjpm-9ssYk3$(HNxQA1cgx7FTb*9Y`yH~NkVw8Jc(+xurR*8AQ=s5^BM1>c7$jfSx zE%zyFPRF6x4?;cOud{um=y)Wu=~na1ig{rCJp0aaLN}Kf@V4-GPUb)ngF-} zn)*nNSYxt59jbi-M96#H8+6gfk=BGk~-C=qlBB`z}K?FC!<>f_mB6U9w9lQRA@^ik!uD_;p z8?>cX3!0qH6Fd7Ut4LTcc91YLQ--p#^hW%*I{tE}{#w_Ecb^*M^+ z=T9tX&a7LELc#qKR=%`T$ltHmDhG zHI5}c@v?ka5vl~Y3acmp#IE=V6-O9sD?yU6QW;#F zC`*zuNy>e#RGlxK-*wBT>eF1Fm8ZT}Ka#55R7<&?k{CJ@4Zog$(dfLO8I?!)WS#2x zK?g0boEaz*<9Hd5F)#NkY5MSZ7>Jfvu0*eu*)c0$?T3TN^wVk>Cw98e`loWpr%tqd zj90#vNZZf}BfsO0lY?I#Qyn0eSH}B8X$Mj;8;tsF@}*K*WqOf?3QjU5e=oba;ynrh zVX$P~kpbZTazl219eb)WAPd86pNQ8dxh%Vtt)(Bvc0+OzR%ghezSxt;k>U_q^E)op z$uh({vRSk|giOzG~7T*jyRo9e2XE|fR>Tu#j>QWLpWk&Emfj^C_%+iK(OP#bp>P6fW9@)#E6b4EY@OI)h_iJ8`1K=w=>L12^!+pg*SgOFeU->y*@LbBe3`b=ws6l>Y6wvq^ z-Dv-5T|0}Fk@f(3mr2Q&OH%zd{)uJ+2@>y>#?^Iyx=H(mjks0fagrIXSi6DW+6I|U z0Ln3(i*IJM34a@KH1`cwLyQ+3jHHPz{Jk?%W6}TsT;THRs^8kqTYe$>bptp^99l!$ zfXnTIg5wF~0@%hS#k%U%5rcJ-^6PO7qq^fQVmzpgU+Uz7v%!^nNfgj;xolNmswUI2 z0PO;QL6NNaBNaR{e$Gg<&sVOu;o5eBFfoF<2FC33x&G6eHeyK0&nzRg~1*0 z{h#MiUNVDOg+Y-iN(e2|ppZ2vtkT6o3-HZK zQB;blwic4}ernv_sd#9><<)7Yfh#O~dL0b&J6@evS=;nF4Jgl?jIsKOx;9qq)#po@kPHYl?#6|(62?#H z9pW$XSTlz1FvV@l)PE+N^;I@Z0`kdlSqV^zR&Ada2800YuFifkvCcNXK1$_(HfO~< zEMSVJ=ZZrUlOkdzTJ|R^XI9v`Z&rpM!*N|_M7lXvfUzwZCkMj{ss->IV?2T7ec`9* zY5P8jjkck$KCvH_-gr;*byO*X@X#k#>2oa+$JKhx_%_MAn3;K?(Xda~g5 zsc020CBCSHey(gqwEixxf}Gozm9jj_K8Ss*f+L<&cZ5AID|bA7i?M<4<7!QCv0dPF zI-#{K#`yx#6)R*~DsMKk^?aT7BV$ez4>Fkh^%;y0Ctj(`%HgPMDgnd+H%Z6_#Z}QP zHQzJ_6z5g=e4Ccb+%i3XSe;Zq`>qJUTazppgIt=JMy&@F-z&PyVGKB5ro9!8tM3(m zR`gu)GZ_lveIN3K>SJ3ma)|_#ni^fZ?>u-s;+~hcky!z@FxK4H<5}n=q;-GaZuMRL zVW90JTm*)Z!+v9CBn)1+N(nKe5m^kucp(X1D?i%g0}4&sAUN26h_YWY%yhPAD|Ii9|%bF*3`(#G(B!Sn6_#Ye+Oe{rJE|)*ZmW9{XrQ4>3?ru zWs>cJ7^vSDlL(tO>2wJGNi;4eCUo z=|p1NVi}vQw+3}Au1-3dAYjzA>|xhv`}uTT{yXl@9^zbJ0+TfRUda+6x&xfms-_ zB~FRgr*A{T98Nf|(;G=X3CsMZ2G;chmQP=)(S14zPN#n9tEPGN>qJ|R<1H=!HWEty z-S^aW3$iO09mET0lwsa(RMd zZYYQ}36Uh!e8R*6sK;EFReYc%Vy0p zUa?<)L^e_|4_`k69?AC`hOKq+cj&GF z8X{$iv~T>vCj&8e`9#wPv?GcD_2x8$shrS9yOy4(GC&O^8F)hPrW2Duy-J&u&iI{z yH(OrvgH_!$$=&N{Hxb_1DYbJe Date: Wed, 6 Aug 2025 19:11:50 -0500 Subject: [PATCH 26/55] Finished rename + basic testing of bugfix --- static/extensions/BurningHot687/bitsandhexa.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 099badd25..da978889c 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -128,7 +128,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI const extraBlocks = extOpen ? extBlockArray : []; return { id: "burninghot687bitwisewhexa", - name: Scratch.translate("Bits and Hexa"), + name: Scratch.translate("Bitwise") + "+", color1: "#15448f", color2: "#0f1f70", color3: "#0a094f", From de0e497f110f2382a3199cfb6450fb8e38092d27 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Wed, 6 Aug 2025 19:16:38 -0500 Subject: [PATCH 27/55] Update extensions.js --- src/lib/extensions.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/extensions.js b/src/lib/extensions.js index 94db222b2..7ea8bdff3 100644 --- a/src/lib/extensions.js +++ b/src/lib/extensions.js @@ -462,13 +462,13 @@ export default [ note: "Extension thumbnail made by Dillon." }, { - name: "Bits & Hexa", - description: "An extension to deal with bitwise operations that supports hexadecimal.", + name: "Bitwise+", + description: "An expansion of the original Bitwise extension, this adds a lot of binary representation abilities!", code: "BurningHot687/bitsandhexa.js", - banner: "BurningHot687/ADDMEbitsandhexa.png", + banner: "BurningHot687/bitsandhexa.png", creator: "Raichu-Model", documentation: "bitsandhexa", - creatorAlias: "BurningHot687", + creatorAlias: "BurningHot687/Raichu-Model/-Rig", notes: "An expansion of a turbowarp extension", isGitHub: false, }, From a912b4697d4d13a2916d66af0ad6175ba5f80f5d Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Thu, 7 Aug 2025 16:39:54 -0500 Subject: [PATCH 28/55] Arrays + hopefully fixed dynamic length leading zeroes in front of hexadecimal should now stop negative values from popping up, haven't tested it other than that so please help me test this guys :sob: oh yeah and ASCII support soon hopefully with these new arrays :fire: --- .../extensions/BurningHot687/bitsandhexa.js | 183 ++++++++++++------ 1 file changed, 127 insertions(+), 56 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index da978889c..4e7ea9933 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.14 +// V0.15 (function(Scratch){ "use strict"; @@ -28,6 +28,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // throw new Error("This extension prefers to be used unsandboxed"); } + // yo thanks PackGod, or jwlong or whatever you like to call yourself + let jwArray = { + Type: class { }, + Block: {}, + Argument: {}, + } + let fullLength = true; let selLengthIsFull = true; let extOpen = false; @@ -60,6 +67,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, }, + { + opcode: "testinglol", + text: "foo and [ARG]", + blockType: Scratch.BlockType.REPORTER, + blockShape: Scratch.BlockShape.SQUARE, + hideFromPalette: true, + arguments: { + ARG: jwArray.Argument + }, + ...jwArray.Block + }, + { + opcode: "stringToASCIIArray", + text: "[STR] to ASCII array in [BASE]", + blockType: Scratch.BlockType.REPORTER, + blockShape: Scratch.BlockShape.SQUARE, + arguments: { + STR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "foo?!", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, ]; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; @@ -87,14 +121,29 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI function testForFormat(numString, base) { switch (basesArray.indexOf(base)) { - case 0: - return isItDecimal(numString); - case 1: - return isItBinary(numString); - case 2: - return isItHexadecimal(numString); + case 0: + return isItDecimal(numString); + case 1: + return isItBinary(numString); + case 2: + return isItHexadecimal(numString); } }; + + function getBitAt(NUM, IDX) { + if (IDX > 31) return ""; + let cValue = NUM; + console.log(NUM); + console.log(IDX); + if (!(isItDecimal(cValue) || isItHexadecimal(cValue))) return ""; + if (isItHexadecimal(cValue) && /[abcdef]/i.test(cValue)) { + cValue = "0x" + cValue; + } + if (IDX > parseInt(cValue, 2).length && !fullLength) return ""; + console.log(parseInt(cValue).toString(2)); + console.log((parseInt(cValue) >>> IDX) & 1); + return (parseInt(cValue) >>> IDX) & 1; + }; function binaryReformat(Value, neg = true) { let newValue = Math.abs(Value).toString(2).length + 1; @@ -124,6 +173,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }; class Extension { + constructor() { + if (!vm.jwArray) vm.extensionManager.loadExtensionIdSync('jwArray'); jwArray = vm.jwArray; + } + getInfo() { const extraBlocks = extOpen ? extBlockArray : []; return { @@ -411,7 +464,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI text: extOpen ? "Close Extras" : "Open Extras", blockType: Scratch.BlockType.BUTTON, }, - "---", ].concat(extraBlocks), menus: { BASES: { @@ -442,29 +494,29 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI binaryLengthGetter(args) { // Still need to fix monitors here lol switch (args.LENGTH) { - case 'fixed': - selLengthIsFull = true; - return fullLength; - case 'dynamic': - selLengthIsFull = false; - return !fullLength; - default: - console.log("error here?"); - break; + case 'fixed': + selLengthIsFull = true; + return fullLength; + case 'dynamic': + selLengthIsFull = false; + return !fullLength; + default: + console.log("error here?"); + break; } } binaryLengthSetter(args) { switch (args.LENGTH) { - case 'fixed': - fullLength = true; - break; - case 'dynamic': - fullLength = false; - break; - default: - console.log("error here?"); - break; + case 'fixed': + fullLength = true; + break; + case 'dynamic': + fullLength = false; + break; + default: + console.log("error here?"); + break; } } @@ -492,50 +544,52 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI console.log("same!"); // return args.NUM; } + + let leadingZeroes = ''; if (fullLength) { computeValue = parseInt(computeValue, (args.FROM === basesArray[0]) ? 10 : ((args.FROM === basesArray[1]) ? 2: 16)); } else { + for (let i = 0; i < computeValue.length; i++) { + if (computeValue[i] != "0") break; + leadingZeroes = leadingZeroes.concat("0"); + } console.log("dynamic adjust") switch (basesArray.indexOf(args.FROM)) { - case 0: - computeValue = parseInt(computeValue); - break; - case 1: - computeValue = binaryToDecimal(computeValue); - break; - case 2: - computeValue = binaryToDecimal((parseInt(computeValue, 16) >>> 0).toString(2)); - break; - } - } - - switch (basesArray.indexOf(args.BASE)) { case 0: - computeValue = computeValue.toString(10); + computeValue = parseInt(computeValue); break; case 1: - computeValue = binaryReformat(computeValue, computeValue < 0); + computeValue = binaryToDecimal(computeValue); break; case 2: - computeValue = fullLength ? computeValue.toString(16) : parseInt(binaryReformat(computeValue, computeValue < 0), 2).toString(16); + computeValue = binaryToDecimal(leadingZeroes.concat((parseInt(computeValue, 16) >>> 0).toString(2))); break; - default: - console.log("failed?"); - return ""; + } + } + if (fullLength) computeValue = computeValue >> 0; + + switch (basesArray.indexOf(args.BASE)) { + case 0: + computeValue = computeValue.toString(10); + break; + case 1: + computeValue = binaryReformat(computeValue, computeValue < 0); + break; + case 2: + let negative = computeValue < 0; + computeValue = parseInt(binaryReformat(computeValue, negative), 2).toString(16); + if (!fullLength && !negative) computeValue = "0" + computeValue; + break; + default: + console.log("failed?"); + return ""; } return computeValue; } getBitAtIdx(args) { - if (args.IDX > 31) return ""; - let computeValue = args.NUM; - if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; - if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { - computeValue = "0x" + computeValue; - } - if (args.IDX > parseInt(computeValue, 2).length && !fullLength) return ""; - return (parseInt(computeValue) >> args.IDX) & 1; + return getBitAt(args.NUM, args.IDX); } signedRightShiftBitz(args) { @@ -544,8 +598,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } + let signBit = binaryReformat(computeValue)[0]; - return computeValue >> args.AMOUNT; + if (fullLength) { + return computeValue >> args.AMOUNT; + } + return signBit.repeat(args>AMOUNT) + (computeValue >> args.AMOUNT).toString(); } leftShiftBitz(args) { @@ -575,7 +633,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue >> args.AMOUNT | computeValue << (32 - args.AMOUNT); + return computeValue >> args.AMOUNT | computeValue << (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT); } circularLeftShiftBitz(args) { @@ -585,7 +643,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue << args.AMOUNT | computeValue >> (32 - args.AMOUNT); + return computeValue << args.AMOUNT | computeValue >> (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT); } bitwiseAndOperator(args) { @@ -710,6 +768,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ~(value1 ^ value2); } + + testinglol(args) { + args.ARG = jwArray.Type.toArray(args.ARG); + return new jwArray.Type(["foo", args.ARG]); + } + + stringToASCIIArray(args) { + let computeValue = []; + for (let i = 0; i < args.STR.length; i++) { + computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + } + return new jwArray.Type(computeValue); + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From f15fd6cd29c8a123b61f3233972db09f36bf2fdb Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Thu, 7 Aug 2025 16:57:46 -0500 Subject: [PATCH 29/55] Array fix Lesson learned: define blocks AFTER all the blocks' methods have been defined or whatever --- .../extensions/BurningHot687/bitsandhexa.js | 111 +++++++++--------- 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 4e7ea9933..6871e40b7 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -39,62 +39,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI let selLengthIsFull = true; let extOpen = false; let basesArray = ["decimal", "binary", "hexadecimal"]; - const extBlockArray = [ - { - text: "Configuration Settings ⚠", - blockType: Scratch.BlockType.LABEL, - }, - { - opcode: "binaryLengthSetter", - text: "use a [LENGTH] length for binary", - blockType: Scratch.BlockType.COMMAND, - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - } - }, - }, - { - opcode: "binaryLengthGetter", - text: "using [LENGTH] length?", - blockType: Scratch.BlockType.BOOLEAN, - label: selLengthIsFull ? "using fixed length" : "using dynamic length", - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - }, - }, - }, - { - opcode: "testinglol", - text: "foo and [ARG]", - blockType: Scratch.BlockType.REPORTER, - blockShape: Scratch.BlockShape.SQUARE, - hideFromPalette: true, - arguments: { - ARG: jwArray.Argument - }, - ...jwArray.Block - }, - { - opcode: "stringToASCIIArray", - text: "[STR] to ASCII array in [BASE]", - blockType: Scratch.BlockType.REPORTER, - blockShape: Scratch.BlockShape.SQUARE, - arguments: { - STR: { - type: Scratch.ArgumentType.STRING, - defaultValue: "foo?!", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - }, - ]; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; @@ -178,6 +122,61 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } getInfo() { + const extBlockArray = [ + { + text: "Configuration Settings ⚠", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "binaryLengthSetter", + text: "use a [LENGTH] length for binary", + blockType: Scratch.BlockType.COMMAND, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + } + }, + }, + { + opcode: "binaryLengthGetter", + text: "using [LENGTH] length?", + blockType: Scratch.BlockType.BOOLEAN, + label: selLengthIsFull ? "using fixed length" : "using dynamic length", + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + }, + }, + }, + { + opcode: "testinglol", + text: "foo and [ARG]", + blockType: Scratch.BlockType.REPORTER, + blockShape: Scratch.BlockShape.SQUARE, + hideFromPalette: true, + arguments: { + ARG: jwArray.Argument + }, + ...jwArray.Block + }, + { + opcode: "stringToASCIIArray", + text: "[STR] to ASCII array in [BASE]", + arguments: { + STR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "foo?!", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + ...jwArray.Block + }, + ]; const extraBlocks = extOpen ? extBlockArray : []; return { id: "burninghot687bitwisewhexa", From af5411e6ece0196a62c2ef85fe050ee98ec51b48 Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Thu, 7 Aug 2025 17:14:46 -0500 Subject: [PATCH 30/55] I hate dynamic length PLEASE someone help me out with this, my brain hurts and even I don't know if I fixed things or not. --- .../extensions/BurningHot687/bitsandhexa.js | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 6871e40b7..d64042b0e 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -115,6 +115,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI console.log(newerValue); return newerValue; }; + + function binaryStupidity(value) { + return fullLength ? value : binaryToDecimal(binaryReformat(value, binaryToDecimal(value.toString(2)) < 0)); + }; class Extension { constructor() { @@ -602,7 +606,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (fullLength) { return computeValue >> args.AMOUNT; } - return signBit.repeat(args>AMOUNT) + (computeValue >> args.AMOUNT).toString(); + return binaryToDecimal(signBit.repeat(args.AMOUNT) + (computeValue >> args.AMOUNT).toString(2)); } leftShiftBitz(args) { @@ -612,7 +616,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue << args.AMOUNT; + return binaryStupidity(computeValue << args.AMOUNT); } unsignedRightShiftBitz(args) { @@ -622,7 +626,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue >>> args.AMOUNT; + return binaryStupidity(computeValue >>> args.AMOUNT); } circularRightShiftBitz(args) { @@ -632,7 +636,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue >> args.AMOUNT | computeValue << (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT); + return binaryStupidity(computeValue >> args.AMOUNT | computeValue << (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT)); } circularLeftShiftBitz(args) { @@ -642,7 +646,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = "0x" + computeValue; } - return computeValue << args.AMOUNT | computeValue >> (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT); + return binaryStupidity(computeValue << args.AMOUNT | computeValue >> (fullLength ? 32 : binaryReformat(computeValue) - args.AMOUNT)); } bitwiseAndOperator(args) { @@ -662,7 +666,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return value1 & value2; + return binaryStupidity(value1 & value2); } bitwiseOrOperator(args) { @@ -680,7 +684,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return value1 | value2; + return binaryStupidity(value1 | value2); } bitwiseXorOperator(args) { @@ -698,7 +702,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return value1 ^ value2; + return binaryStupidity(value1 ^ value2); } bitwiseNotOperator(args) { From ff95d7e19061238fbb70df5909efede979e50e6d Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Fri, 8 Aug 2025 15:32:58 -0500 Subject: [PATCH 31/55] String Update + Dynamic Length Probably Dropped I will be updating the main blocks to make sure they work (dynamic length might get updates too). Bugfixes are going to be numerous :sob: Also strings support will be finished soon --- .../extensions/BurningHot687/bitsandhexa.js | 118 ++++++++++++------ 1 file changed, 80 insertions(+), 38 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index d64042b0e..3a6c9748c 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -75,7 +75,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }; function getBitAt(NUM, IDX) { - if (IDX > 31) return ""; + if (IDX > 31 || IDX < 0) return ""; let cValue = NUM; console.log(NUM); console.log(IDX); @@ -83,7 +83,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (isItHexadecimal(cValue) && /[abcdef]/i.test(cValue)) { cValue = "0x" + cValue; } - if (IDX > parseInt(cValue, 2).length && !fullLength) return ""; + if (IDX > parseInt(cValue).toString(2).length && !fullLength) return ""; console.log(parseInt(cValue).toString(2)); console.log((parseInt(cValue) >>> IDX) & 1); return (parseInt(cValue) >>> IDX) & 1; @@ -120,6 +120,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return fullLength ? value : binaryToDecimal(binaryReformat(value, binaryToDecimal(value.toString(2)) < 0)); }; + function leadingZeroez(computeValue) { + let returnValue = ''; + for (let i = 0; i < computeValue.length; i++) { + if (computeValue[i] != "0") break; + returnValue = returnValue.concat("0"); + } + return returnValue; + }; + + function chooseBaseValue(index) { + return index === 0 ? 10 : index === 1 ? 2 : 16; + }; + class Extension { constructor() { if (!vm.jwArray) vm.extensionManager.loadExtensionIdSync('jwArray'); jwArray = vm.jwArray; @@ -128,32 +141,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI getInfo() { const extBlockArray = [ { - text: "Configuration Settings ⚠", + text: "String Array", blockType: Scratch.BlockType.LABEL, }, - { - opcode: "binaryLengthSetter", - text: "use a [LENGTH] length for binary", - blockType: Scratch.BlockType.COMMAND, - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - } - }, - }, - { - opcode: "binaryLengthGetter", - text: "using [LENGTH] length?", - blockType: Scratch.BlockType.BOOLEAN, - label: selLengthIsFull ? "using fixed length" : "using dynamic length", - arguments: { - LENGTH: { - type: Scratch.ArgumentType.STRING, - menu: "LENGTHS", - }, - }, - }, { opcode: "testinglol", text: "foo and [ARG]", @@ -180,6 +170,49 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, ...jwArray.Block }, + { + opcode: "ASCIIArrayToString", + text: "[ARRAY] in [BASE] to string", + blockType: Scratch.BlockType.REPORTER, + arguments: { + ARRAY: jwArray.Argument, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + text: "Configuration Settings ⚠", + blockType: Scratch.BlockType.LABEL, + }, + { + text: "Doesn't work with all blocks!", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "binaryLengthSetter", + text: "use a [LENGTH] length for binary", + blockType: Scratch.BlockType.COMMAND, + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + } + }, + }, + { + opcode: "binaryLengthGetter", + text: "using [LENGTH] length?", + blockType: Scratch.BlockType.BOOLEAN, + label: selLengthIsFull ? "using fixed length" : "using dynamic length", + arguments: { + LENGTH: { + type: Scratch.ArgumentType.STRING, + menu: "LENGTHS", + }, + }, + }, ]; const extraBlocks = extOpen ? extBlockArray : []; return { @@ -548,14 +581,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // return args.NUM; } - let leadingZeroes = ''; if (fullLength) { - computeValue = parseInt(computeValue, (args.FROM === basesArray[0]) ? 10 : ((args.FROM === basesArray[1]) ? 2: 16)); + computeValue = parseInt(computeValue, chooseBaseValue(basesArray.indexOf(args.FROM))); } else { - for (let i = 0; i < computeValue.length; i++) { - if (computeValue[i] != "0") break; - leadingZeroes = leadingZeroes.concat("0"); - } console.log("dynamic adjust") switch (basesArray.indexOf(args.FROM)) { case 0: @@ -565,7 +593,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = binaryToDecimal(computeValue); break; case 2: - computeValue = binaryToDecimal(leadingZeroes.concat((parseInt(computeValue, 16) >>> 0).toString(2))); + computeValue = binaryToDecimal(leadingZeroez(computeValue).concat((parseInt(computeValue, 16) >>> 0).toString(2))); break; } } @@ -601,12 +629,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } - let signBit = binaryReformat(computeValue)[0]; - + if (fullLength) { return computeValue >> args.AMOUNT; } - return binaryToDecimal(signBit.repeat(args.AMOUNT) + (computeValue >> args.AMOUNT).toString(2)); + computeValue = leadingZeroez(computeValue) + (computeValue >> args.AMOUNT).toString(2); + let signBit = computeValue[0]; + return binaryToDecimal(signBit.repeat(args.AMOUNT) + computeValue); } leftShiftBitz(args) { @@ -615,8 +644,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (isItHexadecimal(computeValue) && /[abcdef]/i.test(computeValue)) { computeValue = "0x" + computeValue; } - - return binaryStupidity(computeValue << args.AMOUNT); + + if (fullLength) return computeValue << args.AMOUNT; + return binaryToDecimal(leadingZeroez(computeValue) + (computeValue << args.AMOUNT).toString(2)); } unsignedRightShiftBitz(args) { @@ -784,6 +814,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } return new jwArray.Type(computeValue); } + + ASCIIArrayToString(args) { + console.log(args.ARRAY); + let myArray = jwArray.Type.toArray(args.ARRAY).array; + console.log(myArray); + let computeValue = ''; + for (let i = 0; i < myArray.length; i++) { + console.log(String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))))); + computeValue = computeValue + String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + return computeValue; + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From bae2a6f9c2c17e2963b94a4047d94161f4112eeb Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Fri, 8 Aug 2025 16:32:10 -0500 Subject: [PATCH 32/55] Strings probably finished, very close to finishing Dynamic length still causes problems that I'm not certain where they're coming from. I'm also probably going to bring back some optimization code and try this extension sandboxed so that I can see how it functions there. Finally there's a couple of final utility blocks I'd like to add as specific-case blocks. This includes "0x" "0b" and "0o," as well as convert numbers from fixed to dynamic length and back, etc. --- .../extensions/BurningHot687/bitsandhexa.js | 135 +++++++++++++++++- 1 file changed, 130 insertions(+), 5 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 3a6c9748c..32008bf83 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.15 +// V0.17.4.0 (function(Scratch){ "use strict"; @@ -90,7 +90,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }; function binaryReformat(Value, neg = true) { - let newValue = Math.abs(Value).toString(2).length + 1; + let newValue = Value.toString(2).length; let computedValue = (Value >>> 0).toString(2); if (!fullLength) { console.log(computedValue); @@ -141,7 +141,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI getInfo() { const extBlockArray = [ { - text: "String Array", + text: "Strings", blockType: Scratch.BlockType.LABEL, }, { @@ -155,6 +155,36 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, ...jwArray.Block }, + { + opcode: "charToASCII", + text: "character [CHAR] to ASCII in [BASE]", + blockType: Scratch.BlockType.REPORTER, + arguments: { + CHAR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "f", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "ASCIIToChar", + text: "ASCII [ASCII] in [BASE] to character", + blockType: Scratch.BlockType.REPORTER, + arguments: { + ASCII: { + type: Scratch.ArgumentType.STRING, + defaultValue: "f", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, { opcode: "stringToASCIIArray", text: "[STR] to ASCII array in [BASE]", @@ -172,7 +202,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: "ASCIIArrayToString", - text: "[ARRAY] in [BASE] to string", + text: "ASCII array[ARRAY] in [BASE] to string", blockType: Scratch.BlockType.REPORTER, arguments: { ARRAY: jwArray.Argument, @@ -182,6 +212,65 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, }, + "---", + { + opcode: "charToUTF", + text: "character [CHAR] to UTF-16 in [BASE]", + blockType: Scratch.BlockType.REPORTER, + arguments: { + CHAR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "β", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "UTFToChar", + text: "UTF-16 [UTF] in [BASE] to character", + blockType: Scratch.BlockType.REPORTER, + arguments: { + UTF: { + type: Scratch.ArgumentType.STRING, + defaultValue: "946", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "stringToUTFArray", + text: "[STR] to UTF-16 array in [BASE]", + arguments: { + STR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "foo%", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + ...jwArray.Block + }, + { + opcode: "UTFArrayToString", + text: "UTF array[ARRAY] in [BASE] to string", + blockType: Scratch.BlockType.REPORTER, + arguments: { + ARRAY: jwArray.Argument, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + "---", { text: "Configuration Settings ⚠", blockType: Scratch.BlockType.LABEL, @@ -593,7 +682,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = binaryToDecimal(computeValue); break; case 2: - computeValue = binaryToDecimal(leadingZeroez(computeValue).concat((parseInt(computeValue, 16) >>> 0).toString(2))); + computeValue = binaryToDecimal(leadingZeroez(computeValue) + (parseInt(computeValue, 16) >>> 0).toString(2)); break; } } @@ -807,6 +896,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return new jwArray.Type(["foo", args.ARG]); } + charToASCII(args) { + return args.CHAR.charCodeAt(0).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + } + + ASCIIToChar(args) { + return String.fromCharCode(parseInt(args.ASCII, chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + stringToASCIIArray(args) { let computeValue = []; for (let i = 0; i < args.STR.length; i++) { @@ -826,6 +923,34 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } return computeValue; } + + charToUTF(args) { + return args.CHAR.codePointAt(0).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + } + + UTFToChar(args) { + return String.fromCodePoint(parseInt(args.UTF, chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + + stringToUTFArray(args) { + let computeValue = []; + for (let i = 0; i < args.STR.length; i++) { + computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + } + return new jwArray.Type(computeValue); + } + + UTFArrayToString(args) { + console.log(args.ARRAY); + let myArray = jwArray.Type.toArray(args.ARRAY).array; + console.log(myArray); + let computeValue = ''; + for (let i = 0; i < myArray.length; i++) { + console.log(String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))))); + computeValue = computeValue + String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + return computeValue; + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From dda185c6dbdc706199ef9794978ca7f084354d9e Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Fri, 8 Aug 2025 16:43:32 -0500 Subject: [PATCH 33/55] Can someone do this for me Jk, although it would be nice. I don't think I can document everything immediately, so maybe I'll change the .gitignore or just keep making pull requests. I'll have to ask. --- src/lib/Documentation/bitsandhexa.md | 30 +++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index a66ff499d..7558afd7f 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -1,10 +1,12 @@ -# Bits & Hexa v0.11 +# Bitwise+ v0.17 ## Bitwise Operations for Decimals, Binary, and Hexadecimal -### By BurningHot687/Raichu-Model +### By BurningHot687/Raichu-Model/-Rig If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation). -###### Keep in mind that version 0.11 currently only supports binary, decimal, and hexadecimal. Do not attempt other bases like base 64 or octals because they're not here yet. +###### Keep in mind that version 0.17 currently only supports binary, decimal, and hexadecimal. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. + +--- ```scratch @@ -18,10 +20,18 @@ convert [4d2] from [hexadecimal v] to [decimal v] :: reporter :: #15448f If the input and its assigned base are the same, then it will convert to the requested base. +```scratch +get bit at index (3) of [13] :: reporter :: #15448f +``` + +Gets the bit (`0` or `1`) at the index of the binary representation of the input number. Index `0` refers to the least significant bit. + ```scratch [-13] >> (3) :: reporter :: #15448f ``` +--- + Signed right shift. Think of it like this: We have a number -13 in binary: @@ -38,3 +48,17 @@ For this reason, for each shift, we "duplicate" the sign bit and move it over to `11111111111111111111111111111110` Obviously positive numbers wouldn't be affected drastically due to their sign bits being `0`. + +--- + +## Extras + +These blocks are more experimental and definitely require updates here and there. These are meant to be used for specific-use cases. + +--- + +--- + + + +And that should be all! :D From 201ad12c7185bb9f4159bae214245e9ac7f6acde Mon Sep 17 00:00:00 2001 From: BurningHot687 Date: Sun, 10 Aug 2025 17:25:38 -0500 Subject: [PATCH 34/55] Idek anymore Just have updates that hopefully work for maybe fixing dynamic length in the convert block only and a really broken little endian thing I'll have to go more in-depth later. --- .../extensions/BurningHot687/bitsandhexa.js | 70 ++++++++++++++++--- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 32008bf83..20124a424 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.17.4.0 +// V0.18.0.2 (function(Scratch){ "use strict"; @@ -90,12 +90,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }; function binaryReformat(Value, neg = true) { - let newValue = Value.toString(2).length; let computedValue = (Value >>> 0).toString(2); + let newValue = 0; + for (let i = 0; i < computedValue.length; i++) { + if (computedValue[i] == "0") break; + newValue++; + } + newValue--; if (!fullLength) { console.log(computedValue); console.log(newValue); - if (neg) computedValue = computedValue.slice(clamp(computedValue.length - newValue, 0, computedValue.length), computedValue.length); + if (neg) computedValue = computedValue.slice(newValue); if (!neg) computedValue = "0" + computedValue console.log(computedValue); } @@ -157,9 +162,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: "charToASCII", - text: "character [CHAR] to ASCII in [BASE]", + text: "character [NUM] of [CHAR] to ASCII in [BASE]", blockType: Scratch.BlockType.REPORTER, arguments: { + NUM: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 0, + }, CHAR: { type: Scratch.ArgumentType.STRING, defaultValue: "f", @@ -177,7 +186,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI arguments: { ASCII: { type: Scratch.ArgumentType.STRING, - defaultValue: "f", + defaultValue: "41", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -215,9 +224,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI "---", { opcode: "charToUTF", - text: "character [CHAR] to UTF-16 in [BASE]", + text: "character [NUM] of [CHAR] to UTF-16 in [BASE]", blockType: Scratch.BlockType.REPORTER, arguments: { + NUM: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 0, + }, CHAR: { type: Scratch.ArgumentType.STRING, defaultValue: "β", @@ -249,7 +262,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI arguments: { STR: { type: Scratch.ArgumentType.STRING, - defaultValue: "foo%", + defaultValue: "foo (ノ◕ヮ◕)ノ*:・゚✧", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -271,12 +284,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, "---", + { + text: "Utilities", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: "convertToLittleEndian", + text: "convert [NUM] in [BASE] to little endian", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "1011", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + "---", { text: "Configuration Settings ⚠", blockType: Scratch.BlockType.LABEL, }, { - text: "Doesn't work with all blocks!", + text: "Likely to break or not be supported!", blockType: Scratch.BlockType.LABEL, }, { @@ -629,6 +663,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI console.log("error here?"); break; } + Scratch.vm.runtime.requestToolboxExtensionsUpdate(); } binaryLengthSetter(args) { @@ -667,7 +702,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } if (args.FROM === args.BASE) { console.log("same!"); - // return args.NUM; + return args.NUM; } if (fullLength) { @@ -897,7 +932,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } charToASCII(args) { - return args.CHAR.charCodeAt(0).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); } ASCIIToChar(args) { @@ -925,7 +960,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } charToUTF(args) { - return args.CHAR.codePointAt(0).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); } UTFToChar(args) { @@ -951,6 +986,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } return computeValue; } + + convertToLittleEndian(args) { + let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))).toString(2); + computeValue = '0'.repeat(computeValue.length % 8) + computeValue; + let returnValue = ''; + // computeValue = new Int32Array([computeValue]); + // const myDataView = new DataView(computeValue.buffer); + for (let i = computeValue.length; i > 0; i -= 8) { + returnValue = returnValue + computeValue.slice(clamp(i - 8, 0, computeValue.length), i); + console.log(returnValue); + } + return parseInt(returnValue, 2); + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From a708fb70625e625b166470255cff215700ab6dbe Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Tue, 12 Aug 2025 17:36:43 -0500 Subject: [PATCH 35/55] UH DIDNT TEST GOTTA RUN --- .../extensions/BurningHot687/bitsandhexa.js | 113 +++++++++++++++++- 1 file changed, 109 insertions(+), 4 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 20124a424..46f1c5f1c 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -160,6 +160,83 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, ...jwArray.Block }, + { + opcode: "charToBit", + text: "character [NUM] of [CHAR] to [ENCODE] in [BASE]", + blockType: Scratch.BlockType.REPORTER, + arguments: { + NUM: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 0, + }, + CHAR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "f", + }, + ENCODE: { + type: Scratch.ArgumentType.STRING, + menu: "ENCODING", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "bitToChar", + text: "number [NUM] using [ENCODE] in [BASE] to character", + blockType: Scratch.BlockType.REPORTER, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: "41", + }, + ENCODE: { + type: Scratch.ArgumentType.STRING, + menu: "ENCODING", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, + { + opcode: "stringToBitArray", + text: "[STR]] to [ENCODE] array in [BASE]", + arguments: { + STR: { + type: Scratch.ArgumentType.STRING, + defaultValue: "foo?!", + }, + ENCODE: { + type: Scratch.ArgumentType.STRING, + menu: "ENCODING", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + ...jwArray.Block + }, + { + opcode: "bitArrayToString", + text: "[ENCODE] array [ARRAY] in [BASE] to string", + blockType: Scratch.BlockType.REPORTER, + arguments: { + ARRAY: jwArray.Argument, + ENCODE: { + type: Scratch.ArgumentType.STRING, + menu: "ENCODING", + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, { opcode: "charToASCII", text: "character [NUM] of [CHAR] to ASCII in [BASE]", @@ -637,6 +714,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI acceptReporters: false, items: basesArray.slice(), }, + ENCODING: { + acceptReporters: false, + items: ['ASCII', 'UTF-16'], + }, }, }; } @@ -948,12 +1029,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } ASCIIArrayToString(args) { - console.log(args.ARRAY); let myArray = jwArray.Type.toArray(args.ARRAY).array; - console.log(myArray); let computeValue = ''; for (let i = 0; i < myArray.length; i++) { - console.log(String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))))); computeValue = computeValue + String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); } return computeValue; @@ -981,12 +1059,39 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI console.log(myArray); let computeValue = ''; for (let i = 0; i < myArray.length; i++) { - console.log(String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))))); computeValue = computeValue + String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); } return computeValue; } + charToBit(args) { + if (args.ENCODE == 'ASCII') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + if (args.ENCODE == 'UTF-16') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + } + + bitToChar(args) { + if (args.ENCODE == 'ASCII') return String.fromCharCode(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); + if (args.ENCODE == 'UTF-16') return String.fromCodePoint(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + + stringToBitArray(args) { + let computeValue = []; + for (let i = 0; i < args.STR.length; i++) { + if (args.ENCODE == 'ASCII') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + } + return new jwArray.Type(computeValue); + } + + bitArrayToString(args) { + let myArray = jwArray.Type.toArray(args.ARRAY).array; + let computeValue = ''; + for (let i = 0; i < myArray.length; i++) { + computeValue = computeValue + (args.ENCODE == 'ASCII') ? String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))) : String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); + } + return computeValue; + } + convertToLittleEndian(args) { let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))).toString(2); computeValue = '0'.repeat(computeValue.length % 8) + computeValue; From 0be3a03b62c54ef952b265af84b9ef3791471f9e Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:24:15 -0500 Subject: [PATCH 36/55] Added utilities + fixed arrays and endianness Basically done now, just gotta do some more quality-of-life improvements later now --- .../extensions/BurningHot687/bitsandhexa.js | 233 +++++------------- 1 file changed, 55 insertions(+), 178 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 46f1c5f1c..0d0ac0f6d 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V0.18.0.2 +// V1.1.0.16 (function(Scratch){ "use strict"; @@ -63,6 +63,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return !/[^01]/.test(inputString); }; + function isItOctal(inputString) { + return !/[^01234567]/.test(inputString); + }; + function testForFormat(numString, base) { switch (basesArray.indexOf(base)) { case 0: @@ -237,143 +241,54 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, }, + "---", { - opcode: "charToASCII", - text: "character [NUM] of [CHAR] to ASCII in [BASE]", - blockType: Scratch.BlockType.REPORTER, - arguments: { - NUM: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: 0, - }, - CHAR: { - type: Scratch.ArgumentType.STRING, - defaultValue: "f", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - }, - { - opcode: "ASCIIToChar", - text: "ASCII [ASCII] in [BASE] to character", - blockType: Scratch.BlockType.REPORTER, - arguments: { - ASCII: { - type: Scratch.ArgumentType.STRING, - defaultValue: "41", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - }, - { - opcode: "stringToASCIIArray", - text: "[STR] to ASCII array in [BASE]", - arguments: { - STR: { - type: Scratch.ArgumentType.STRING, - defaultValue: "foo?!", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - ...jwArray.Block + text: "Utilities", + blockType: Scratch.BlockType.LABEL, }, { - opcode: "ASCIIArrayToString", - text: "ASCII array[ARRAY] in [BASE] to string", + opcode: "hexaNum", + text: "Ox[NUM]", blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, arguments: { - ARRAY: jwArray.Argument, - BASE: { + NUM: { type: Scratch.ArgumentType.STRING, - menu: "BASES", }, }, }, - "---", { - opcode: "charToUTF", - text: "character [NUM] of [CHAR] to UTF-16 in [BASE]", + opcode: "bitNum", + text: "Ob[NUM]", blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, arguments: { NUM: { type: Scratch.ArgumentType.NUMBER, - defaultValue: 0, - }, - CHAR: { - type: Scratch.ArgumentType.STRING, - defaultValue: "β", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - }, - { - opcode: "UTFToChar", - text: "UTF-16 [UTF] in [BASE] to character", - blockType: Scratch.BlockType.REPORTER, - arguments: { - UTF: { - type: Scratch.ArgumentType.STRING, - defaultValue: "946", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", - }, - }, - }, - { - opcode: "stringToUTFArray", - text: "[STR] to UTF-16 array in [BASE]", - arguments: { - STR: { - type: Scratch.ArgumentType.STRING, - defaultValue: "foo (ノ◕ヮ◕)ノ*:・゚✧", - }, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", }, }, - ...jwArray.Block }, { - opcode: "UTFArrayToString", - text: "UTF array[ARRAY] in [BASE] to string", + opcode: "octNum", + text: "Oo[NUM]", blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, arguments: { - ARRAY: jwArray.Argument, - BASE: { - type: Scratch.ArgumentType.STRING, - menu: "BASES", + NUM: { + type: Scratch.ArgumentType.NUMBER, }, }, }, - "---", - { - text: "Utilities", - blockType: Scratch.BlockType.LABEL, - }, { opcode: "convertToLittleEndian", - text: "convert [NUM] in [BASE] to little endian", + text: "reverse endianness of [NUM] in [BASE]", + tooltip: 'This just basically reverses the byte order. Doesn\'t support dynamic length.', blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { NUM: { type: Scratch.ArgumentType.STRING, - defaultValue: "1011", + defaultValue: "37", }, BASE: { type: Scratch.ArgumentType.STRING, @@ -387,7 +302,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI blockType: Scratch.BlockType.LABEL, }, { - text: "Likely to break or not be supported!", + text: "Likely to not work as intended!", blockType: Scratch.BlockType.LABEL, }, { @@ -406,6 +321,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI text: "using [LENGTH] length?", blockType: Scratch.BlockType.BOOLEAN, label: selLengthIsFull ? "using fixed length" : "using dynamic length", + disableMonitor: true, // NEED TO FIX SOMEDAY arguments: { LENGTH: { type: Scratch.ArgumentType.STRING, @@ -716,7 +632,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, ENCODING: { acceptReporters: false, - items: ['ASCII', 'UTF-16'], + items: ['BMP', 'UTF-16'], }, }, }; @@ -744,7 +660,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI console.log("error here?"); break; } - Scratch.vm.runtime.requestToolboxExtensionsUpdate(); + // Scratch.vm.runtime.requestToolboxExtensionsUpdate(); } binaryLengthSetter(args) { @@ -950,7 +866,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return ~value1; + return binaryStupidity(~value1); } bitwiseNandOperator(args) { @@ -968,7 +884,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return ~(value1 & value2); + return binaryStupidity(~(value1 & value2)); } bitwiseNorOperator(args) { @@ -986,7 +902,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return ""; } - return ~(value1 | value2); + return binaryStupidity(~(value1 | value2)); } bitwiseXnorOperator(args) { @@ -1003,65 +919,25 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (isNaN(parseInt(value1)) || isNaN(parseInt(value2))) { return ""; } - - return ~(value1 ^ value2); - } - - testinglol(args) { - args.ARG = jwArray.Type.toArray(args.ARG); - return new jwArray.Type(["foo", args.ARG]); - } - - charToASCII(args) { - return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); - } - - ASCIIToChar(args) { - return String.fromCharCode(parseInt(args.ASCII, chooseBaseValue(basesArray.indexOf(args.BASE)))); - } - - stringToASCIIArray(args) { - let computeValue = []; - for (let i = 0; i < args.STR.length; i++) { - computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); - } - return new jwArray.Type(computeValue); - } - - ASCIIArrayToString(args) { - let myArray = jwArray.Type.toArray(args.ARRAY).array; - let computeValue = ''; - for (let i = 0; i < myArray.length; i++) { - computeValue = computeValue + String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); - } - return computeValue; + + return binaryStupidity(~(value1 ^ value2)); } - - charToUTF(args) { - return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + + hexaNum(args) { + return isItHexadecimal(args.NUM) ? parseInt(args.NUM, 16) : ''; } - UTFToChar(args) { - return String.fromCodePoint(parseInt(args.UTF, chooseBaseValue(basesArray.indexOf(args.BASE)))); + bitNum(args) { + return isItBinary(args.NUM.toString()) ? parseInt(args.NUM.toString(), 2) : ''; } - stringToUTFArray(args) { - let computeValue = []; - for (let i = 0; i < args.STR.length; i++) { - computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); - } - return new jwArray.Type(computeValue); + octNum(args) { + return isItOctal(args.NUM.toString()) ? parseInt(args.NUM.toString(), 8) : ''; } - UTFArrayToString(args) { - console.log(args.ARRAY); - let myArray = jwArray.Type.toArray(args.ARRAY).array; - console.log(myArray); - let computeValue = ''; - for (let i = 0; i < myArray.length; i++) { - computeValue = computeValue + String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); - } - return computeValue; + testinglol(args) { + args.ARG = jwArray.Type.toArray(args.ARG); + return new jwArray.Type(["foo", args.ARG]); } charToBit(args) { @@ -1077,7 +953,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI stringToBitArray(args) { let computeValue = []; for (let i = 0; i < args.STR.length; i++) { - if (args.ENCODE == 'ASCII') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + if (args.ENCODE == 'BMP') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); } return new jwArray.Type(computeValue); @@ -1085,24 +961,25 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI bitArrayToString(args) { let myArray = jwArray.Type.toArray(args.ARRAY).array; + console.log(myArray); + if (myArray.length === 0) return ''; let computeValue = ''; for (let i = 0; i < myArray.length; i++) { - computeValue = computeValue + (args.ENCODE == 'ASCII') ? String.fromCharCode(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))) : String.fromCodePoint(parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE)))); + let charValue = parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))); + computeValue = computeValue.concat(args.ENCODE === 'BMP' ? String.fromCharCode(charValue) : String.fromCodePoint(charValue)); + console.log(computeValue); } return computeValue; } + convertToLittleEndian(args) { - let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))).toString(2); - computeValue = '0'.repeat(computeValue.length % 8) + computeValue; - let returnValue = ''; - // computeValue = new Int32Array([computeValue]); - // const myDataView = new DataView(computeValue.buffer); - for (let i = computeValue.length; i > 0; i -= 8) { - returnValue = returnValue + computeValue.slice(clamp(i - 8, 0, computeValue.length), i); - console.log(returnValue); - } - return parseInt(returnValue, 2); + let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))); + computeValue = new Int32Array([computeValue]); + console.log(computeValue); + computeValue.reverse(); + const myDataView = new DataView(computeValue.buffer); + return myDataView.getInt32(0, false); } } Scratch.extensions.register(new Extension()); From 9058b5406bf80ede075f79ea053b763c91053c1d Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:30:15 -0500 Subject: [PATCH 37/55] Added some shifts to docs --- src/lib/Documentation/bitsandhexa.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 7558afd7f..79ccc57fe 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -26,13 +26,13 @@ get bit at index (3) of [13] :: reporter :: #15448f Gets the bit (`0` or `1`) at the index of the binary representation of the input number. Index `0` refers to the least significant bit. +--- + ```scratch [-13] >> (3) :: reporter :: #15448f ``` ---- - -Signed right shift. Think of it like this: +Think of it like this: We have a number -13 in binary: `11111111111111111111111111110011` @@ -49,6 +49,20 @@ For this reason, for each shift, we "duplicate" the sign bit and move it over to Obviously positive numbers wouldn't be affected drastically due to their sign bits being `0`. +```scratch +[13] << (3) :: reporter :: #15448f +``` + +Shifts the bits left by the amount requested (`1111` to `111100` if the amount was `2`). + +```scratch +[-13] >>> (3) :: reporter :: #15448f +``` + +Just shifts it to the right without caring about the sign bit: + +`11111111111111111111111111110011` to `00011111111111111111111111111110` or `-13` to `536870899` + --- ## Extras From 6af3eb21d43f9303a909634470bc10910f86c014 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:30:31 -0500 Subject: [PATCH 38/55] Updated version number --- src/lib/Documentation/bitsandhexa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 79ccc57fe..932e74cf5 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -1,4 +1,4 @@ -# Bitwise+ v0.17 +# Bitwise+ v1.1 ## Bitwise Operations for Decimals, Binary, and Hexadecimal ### By BurningHot687/Raichu-Model/-Rig From 18e87a20f2261c6f26d498cccec9428d3e4bdf3c Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:37:54 -0500 Subject: [PATCH 39/55] More docs --- src/lib/Documentation/bitsandhexa.md | 36 ++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 932e74cf5..627a6f713 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -32,7 +32,7 @@ Gets the bit (`0` or `1`) at the index of the binary representation of the input [-13] >> (3) :: reporter :: #15448f ``` -Think of it like this: +Signed right shift. Think of it like this: We have a number -13 in binary: `11111111111111111111111111110011` @@ -59,12 +59,44 @@ Shifts the bits left by the amount requested (`1111` to `111100` if the amount w [-13] >>> (3) :: reporter :: #15448f ``` -Just shifts it to the right without caring about the sign bit: +Unsigned right shift. Just shifts it to the right without caring about the sign bit: `11111111111111111111111111110011` to `00011111111111111111111111111110` or `-13` to `536870899` +```scratch +[-13] ↻ (3) :: reporter :: #15448f +``` + +Circular right shift: + +Basically an unsigned right shift but instead of deleting bits they are looped to the 32nd bit. + +```scratch +[-13] ↺ (3) :: reporter :: #15448f +``` + +Same as before but opposite direction. + --- +```scratch +() & () | and :: reporter :: #15448f +``` + +Bitwise and. + +```scratch +() | () | or :: reporter :: #15448f +``` + +Bitwise or. + +```scratch +() ^ () | xor :: reporter :: #15448f +``` + +Bitwise exclusive or (returns `1` if only one bit is on). + ## Extras These blocks are more experimental and definitely require updates here and there. These are meant to be used for specific-use cases. From a38f03a8c777ab04d2ea1e46e4356d64382a0a59 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:38:35 -0500 Subject: [PATCH 40/55] Cleanup console.log removal, fixed 'fixed' to 'static', and fixed spacing for 'not' --- .../extensions/BurningHot687/bitsandhexa.js | 40 +++---------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 0d0ac0f6d..9e36713aa 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V1.1.0.16 +// V1.1.1.16 (function(Scratch){ "use strict"; @@ -44,10 +44,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI function isInCorrectFormat(inputString) { if ((inputString != parseInt(inputString, 10).toString(10)) && !isItHexadecimal(inputString)) { - console.log("bad string") return false; } - console.log("good string"); return true; }; @@ -81,15 +79,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI function getBitAt(NUM, IDX) { if (IDX > 31 || IDX < 0) return ""; let cValue = NUM; - console.log(NUM); - console.log(IDX); if (!(isItDecimal(cValue) || isItHexadecimal(cValue))) return ""; if (isItHexadecimal(cValue) && /[abcdef]/i.test(cValue)) { cValue = "0x" + cValue; } if (IDX > parseInt(cValue).toString(2).length && !fullLength) return ""; - console.log(parseInt(cValue).toString(2)); - console.log((parseInt(cValue) >>> IDX) & 1); return (parseInt(cValue) >>> IDX) & 1; }; @@ -102,17 +96,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } newValue--; if (!fullLength) { - console.log(computedValue); - console.log(newValue); if (neg) computedValue = computedValue.slice(newValue); if (!neg) computedValue = "0" + computedValue - console.log(computedValue); } return computedValue; }; function clamp(value, min, max) { - console.log(Math.max(min, Math.min(value, max))) return Math.max(min, Math.min(value, max)); }; @@ -121,7 +111,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI for (let i = computedValue.length; i > 0; i--) { newerValue += parseInt(computedValue[i - 1]) * (Math.pow(2, computedValue.length - i)) * ((i === 1) ? -1 : 1); } - console.log(newerValue); return newerValue; }; @@ -320,7 +309,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI opcode: "binaryLengthGetter", text: "using [LENGTH] length?", blockType: Scratch.BlockType.BOOLEAN, - label: selLengthIsFull ? "using fixed length" : "using dynamic length", + label: selLengthIsFull ? "using static length" : "using dynamic length", disableMonitor: true, // NEED TO FIX SOMEDAY arguments: { LENGTH: { @@ -548,7 +537,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, switches: [ 'bitwiseOrOperator', 'bitwiseAndOperator', 'bitwiseNotOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, - "---", { opcode: "bitwiseNotOperator", text: "~[NUM] | not", @@ -562,6 +550,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, switches: [ 'bitwiseOrOperator', 'bitwiseXorOperator', 'bitwiseAndOperator', 'bitwiseNandOperator', 'bitwiseNorOperator', 'bitwiseXnorOperator' ], }, + "---", { opcode: "bitwiseNandOperator", text: "~[NUM] & [NUM2] | nand", @@ -624,7 +613,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, LENGTHS: { acceptReporters: false, - items: ['fixed', 'dynamic'], + items: ['static', 'dynamic'], }, BASES2: { acceptReporters: false, @@ -650,30 +639,24 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI binaryLengthGetter(args) { // Still need to fix monitors here lol switch (args.LENGTH) { - case 'fixed': + case 'static': selLengthIsFull = true; return fullLength; case 'dynamic': selLengthIsFull = false; return !fullLength; - default: - console.log("error here?"); - break; } // Scratch.vm.runtime.requestToolboxExtensionsUpdate(); } binaryLengthSetter(args) { switch (args.LENGTH) { - case 'fixed': + case 'static': fullLength = true; break; case 'dynamic': fullLength = false; break; - default: - console.log("error here?"); - break; } } @@ -688,24 +671,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI convertBaseTypesBitW(args) { let computeValue = args.NUM; - console.log(args.FROM); - console.log(args.BASE); if (isInCorrectFormat(computeValue) === false) { return ""; } if (!testForFormat(computeValue, args.FROM)) { - console.log("not same as [from]"); return ""; } if (args.FROM === args.BASE) { - console.log("same!"); return args.NUM; } if (fullLength) { computeValue = parseInt(computeValue, chooseBaseValue(basesArray.indexOf(args.FROM))); } else { - console.log("dynamic adjust") switch (basesArray.indexOf(args.FROM)) { case 0: computeValue = parseInt(computeValue); @@ -733,7 +711,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (!fullLength && !negative) computeValue = "0" + computeValue; break; default: - console.log("failed?"); return ""; } @@ -803,8 +780,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI bitwiseAndOperator(args) { let value1 = args.NUM; let value2 = args.NUM2; - console.log(value1); - console.log(value2); if (!(isItDecimal(value1) || isItHexadecimal(value2))) return ""; if (!(isItDecimal(value2) || isItHexadecimal(value2))) return ""; if (isItHexadecimal(value1) && /[abcdef]/i.test(value1)) { @@ -961,13 +936,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI bitArrayToString(args) { let myArray = jwArray.Type.toArray(args.ARRAY).array; - console.log(myArray); if (myArray.length === 0) return ''; let computeValue = ''; for (let i = 0; i < myArray.length; i++) { let charValue = parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))); computeValue = computeValue.concat(args.ENCODE === 'BMP' ? String.fromCharCode(charValue) : String.fromCodePoint(charValue)); - console.log(computeValue); } return computeValue; } @@ -976,7 +949,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI convertToLittleEndian(args) { let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))); computeValue = new Int32Array([computeValue]); - console.log(computeValue); computeValue.reverse(); const myDataView = new DataView(computeValue.buffer); return myDataView.getInt32(0, false); From 39abd226327fafe3d39a758f5f7d074746bfd831 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:42:56 -0500 Subject: [PATCH 41/55] All main blocks to docs THAT RHYMED --- src/lib/Documentation/bitsandhexa.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 627a6f713..9284fea29 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -4,7 +4,7 @@ If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation). -###### Keep in mind that version 0.17 currently only supports binary, decimal, and hexadecimal. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. +###### Keep in mind that version 1.1 currently only supports binary, decimal, and hexadecimal. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. Also keep in mind Scratch has a 32 bit system and floats aren't supported yet. --- @@ -95,7 +95,31 @@ Bitwise or. () ^ () | xor :: reporter :: #15448f ``` -Bitwise exclusive or (returns `1` if only one bit is on). +Bitwise exclusive or (returns `1` if both bits are different). + +```scratch +~() | not :: reporter :: #15448f +``` + +Bitwise not. + +```scratch +~() & () | nand :: reporter :: #15448f +``` + +Bitwise nand (`0` if both inputs are on). + +```scratch +~() | () | nor :: reporter :: #15448f +``` + +Bitwise nor (`1` if both inputs are off). + +```scratch +~() ^ () | xnor :: reporter :: #15448f +``` + +Bitwise exclusive nor (`1` if both inputs are the same). ## Extras From a5dc926f4b4e1a8dfcba9966ca9eb3f5e44caa00 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:49:14 -0500 Subject: [PATCH 42/55] Setup extras, will add soon --- src/lib/Documentation/bitsandhexa.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 9284fea29..61da4495e 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -127,6 +127,16 @@ These blocks are more experimental and definitely require updates here and there --- +```scratch +(::ring)[foo?!] to [BMP v] array in [decimal v](::ring) :: ring control :: #15448f +``` + +Takes in an array and turns it into a string. + +--- + +--- + --- From 098c85895d1d9730c549711204c12f3d362f947e Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:49:52 -0500 Subject: [PATCH 43/55] Fixed typoe ] --- static/extensions/BurningHot687/bitsandhexa.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 9e36713aa..b860ae092 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -197,7 +197,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: "stringToBitArray", - text: "[STR]] to [ENCODE] array in [BASE]", + text: "[STR] to [ENCODE] array in [BASE]", arguments: { STR: { type: Scratch.ArgumentType.STRING, From ea70425a59aaff92b07242518086c4766fa73c5e Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 20:05:28 -0500 Subject: [PATCH 44/55] Hopefully finished docs with minimal problems --- src/lib/Documentation/bitsandhexa.md | 68 +++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index 61da4495e..c4c414793 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -128,17 +128,81 @@ These blocks are more experimental and definitely require updates here and there --- ```scratch -(::ring)[foo?!] to [BMP v] array in [decimal v](::ring) :: ring control :: #15448f +character (0) of [f] to [UTF-16 v] in [decimal v] :: #15448f :: reporter +``` + +Takes in a string and applies +```javascript +"string".charCodeAt(number); +``` + +`codePointAt` is used for Unicode. + +```scratch +number (41) using [UTF-16 v] in [decimal v] to character :: #15448f :: reporter +``` + +Takes in a number and applies +```javascript +String.fromCharCode(number); +``` + +`fromCodePoint` is used for Unicode. + +```scratch +(::ring)[foo?!] to [UTF-16 v] array in [decimal v](::ring) :: ring control :: #15448f ``` Takes in an array and turns it into a string. ---- +```scratch +[UTF-16] array ((::ring)(::ring):: ring control :: #0a094f) in [decimal v] to string :: #15448f :: reporter +``` + +Takes in an array and returns a string. --- +```scratch +reverse endianness of (37) in [decimal v] :: #15448f :: reporter +``` + +Switches the byte order of the provided number. + +```scratch +0x () :: #15448f :: reporter +``` + +Takes in a hexadecimal number and returns a decimal. + +```scratch +0b () :: #15448f :: reporter +``` + +Takes in a binary number and returns a decimal. + +```scratch +0o () :: #15448f :: reporter +``` + +Takes in an octal number and returns a decimal. + --- +>>> These blocks probably won't work with extra blocks and *might* break normal blocks (or at least show unexpected behavior). + +```scratch +use a [static v] length for binary :: #15448f +``` + +Changes the representation of binary numbers. Two's complement is applied to the most significant bit provided rather than the 32nd bit in dynamic mode. +```scratch + +``` + +Checks if you're using static or dynamic length. + +--- And that should be all! :D From 85f092983aaa872acafec9d92cab478a886008e5 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 13 Aug 2025 20:05:56 -0500 Subject: [PATCH 45/55] UTF-16 vs Unicode not BMP vs UTF-16 lol --- static/extensions/BurningHot687/bitsandhexa.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index b860ae092..6fa5c85b2 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -621,7 +621,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, ENCODING: { acceptReporters: false, - items: ['BMP', 'UTF-16'], + items: ['UTF-16', 'Unicode'], }, }, }; @@ -916,20 +916,20 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } charToBit(args) { - if (args.ENCODE == 'ASCII') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); - if (args.ENCODE == 'UTF-16') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + if (args.ENCODE == 'UTF-16') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + if (args.ENCODE == 'Unicode') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); } bitToChar(args) { - if (args.ENCODE == 'ASCII') return String.fromCharCode(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); - if (args.ENCODE == 'UTF-16') return String.fromCodePoint(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); + if (args.ENCODE == 'UTF-16') return String.fromCharCode(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); + if (args.ENCODE == 'Unicode') return String.fromCodePoint(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); } stringToBitArray(args) { let computeValue = []; for (let i = 0; i < args.STR.length; i++) { - if (args.ENCODE == 'BMP') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); - if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + if (args.ENCODE == 'Unicode') computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); } return new jwArray.Type(computeValue); } @@ -940,7 +940,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI let computeValue = ''; for (let i = 0; i < myArray.length; i++) { let charValue = parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))); - computeValue = computeValue.concat(args.ENCODE === 'BMP' ? String.fromCharCode(charValue) : String.fromCodePoint(charValue)); + computeValue = computeValue.concat(args.ENCODE === 'UTF-16' ? String.fromCharCode(charValue) : String.fromCodePoint(charValue)); } return computeValue; } From 73bc7d46f81cbe2a67aac8989cda2c37137220cc Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Fri, 15 Aug 2025 20:40:24 -0500 Subject: [PATCH 46/55] Fixed weird formatting hopefully --- src/lib/Documentation/bitsandhexa.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index c4c414793..d30909821 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -189,7 +189,7 @@ Takes in an octal number and returns a decimal. --- ->>> These blocks probably won't work with extra blocks and *might* break normal blocks (or at least show unexpected behavior). +These blocks probably won't work with extra blocks and *might* break normal blocks (or at least show unexpected behavior). ```scratch use a [static v] length for binary :: #15448f From 2de898c59d9e1547bef31ab5f450edb36a5633f4 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Fri, 15 Aug 2025 21:01:19 -0500 Subject: [PATCH 47/55] More Cleanup Tested with the sandbox (not pretty) so added that error. Cleaned up unused and will probably try to clean it up more later. --- .../extensions/BurningHot687/bitsandhexa.js | 31 ++++++------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index 6fa5c85b2..f5c78af06 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -19,13 +19,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI */ -// V1.1.1.16 +// V1.1.2.7 (function(Scratch){ "use strict"; if (!Scratch.extensions.unsandboxed) { - // throw new Error("This extension prefers to be used unsandboxed"); + throw new Error("This extension has to be used unsandboxed, please."); } // yo thanks PackGod, or jwlong or whatever you like to call yourself @@ -142,17 +142,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI text: "Strings", blockType: Scratch.BlockType.LABEL, }, - { - opcode: "testinglol", - text: "foo and [ARG]", - blockType: Scratch.BlockType.REPORTER, - blockShape: Scratch.BlockShape.SQUARE, - hideFromPalette: true, - arguments: { - ARG: jwArray.Argument - }, - ...jwArray.Block - }, { opcode: "charToBit", text: "character [NUM] of [CHAR] to [ENCODE] in [BASE]", @@ -238,6 +227,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI { opcode: "hexaNum", text: "Ox[NUM]", + switchText: "Ox", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -245,10 +235,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI type: Scratch.ArgumentType.STRING, }, }, + switches: [ 'bitNum', 'octNum' ], }, { opcode: "bitNum", text: "Ob[NUM]", + switchText: "Ob", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -256,10 +248,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI type: Scratch.ArgumentType.NUMBER, }, }, + switches: [ 'hexaNum', 'octNum' ], }, { opcode: "octNum", text: "Oo[NUM]", + switchText: "Oo", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -267,6 +261,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI type: Scratch.ArgumentType.NUMBER, }, }, + switches: [ 'hexaNum', 'bitNum' ], }, { opcode: "convertToLittleEndian", @@ -319,7 +314,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, ]; - const extraBlocks = extOpen ? extBlockArray : []; return { id: "burninghot687bitwisewhexa", name: Scratch.translate("Bitwise") + "+", @@ -335,7 +329,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI opcode: "bitwiseDocumentationButton", text: "Open Documentation", blockType: Scratch.BlockType.BUTTON, - hideFromPalette: true, + // hideFromPalette: true, }, { opcode: "isNumActuallyBase", @@ -605,7 +599,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI text: extOpen ? "Close Extras" : "Open Extras", blockType: Scratch.BlockType.BUTTON, }, - ].concat(extraBlocks), + ].concat(extOpen ? extBlockArray : []), menus: { BASES: { acceptReporters: false, @@ -910,11 +904,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return isItOctal(args.NUM.toString()) ? parseInt(args.NUM.toString(), 8) : ''; } - testinglol(args) { - args.ARG = jwArray.Type.toArray(args.ARG); - return new jwArray.Type(["foo", args.ARG]); - } - charToBit(args) { if (args.ENCODE == 'UTF-16') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); if (args.ENCODE == 'Unicode') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); From 5b23ff42012195597ab1e610b08c68e06fbaafae Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Tue, 19 Aug 2025 19:08:52 -0500 Subject: [PATCH 48/55] 20 FOLD DIFFERENCE?! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (ノ◕ヮ◕)ノ*:・゚✧ please tell me how to do the avif stuff --- static/images/BurningHot687/bitsandhexa.avif | Bin 0 -> 6999 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/BurningHot687/bitsandhexa.avif diff --git a/static/images/BurningHot687/bitsandhexa.avif b/static/images/BurningHot687/bitsandhexa.avif new file mode 100644 index 0000000000000000000000000000000000000000..e1ea4020a03cd63ecca26e3143c4cb309fc04c96 GIT binary patch literal 6999 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 X`m~mb=;7c|Vuyr2_Vjf78 Date: Wed, 20 Aug 2025 17:10:31 -0500 Subject: [PATCH 49/55] Guess Who Just Remembered This Existed? Changed it to the much smaller avif file --- src/lib/extensions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/extensions.js b/src/lib/extensions.js index 7ea8bdff3..393acaadd 100644 --- a/src/lib/extensions.js +++ b/src/lib/extensions.js @@ -465,7 +465,7 @@ export default [ name: "Bitwise+", description: "An expansion of the original Bitwise extension, this adds a lot of binary representation abilities!", code: "BurningHot687/bitsandhexa.js", - banner: "BurningHot687/bitsandhexa.png", + banner: "BurningHot687/bitsandhexa.avif", creator: "Raichu-Model", documentation: "bitsandhexa", creatorAlias: "BurningHot687/Raichu-Model/-Rig", From f56c6d30ddd822692aec9b819ecd36529e4eb966 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:11:03 -0500 Subject: [PATCH 50/55] Deleted PNG yo --- static/images/BurningHot687/bitsandhexa.png | Bin 141744 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 static/images/BurningHot687/bitsandhexa.png diff --git a/static/images/BurningHot687/bitsandhexa.png b/static/images/BurningHot687/bitsandhexa.png deleted file mode 100644 index 2097f2f56fc3148748bd545859d4fbe6dae5a86d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141744 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 z z$>@czw8I9^^qn@$25WR5<mf6^R4Ng%(vQr;OWCaRz3rsbRHXZ7`sD7eQx875=|7y-h zrKaXOk8Uwi>tk1Ki>?ohcFj1Y9s`2F^w@k3xA(NXR@?5BR7}II`0_Ju9ftmPTCzT$ zCUmo{T&&ONyUA-*^gwu9o6D{ksZ=*yNBtt7cH;F!ltUMz3zg%9rtmD(!9KQQ$&9sP zSYq4>2*%1l+g9evw=MW)rCBd!kUlnAf9wA+ zX50`ob8iT)4w6mME*8Ws1=~;D)8%t-1pQZckflKHyX zhtasqf|#mHsg~4Bv7+MtCu%26p*-ng3bwc7pXwodTEQ-f-H#-^Nh_iGV#rp zVFQMi7HOA3QI(gtIp!9PfWKf`iZh_h%<2BhA=5Ulv&?h1H_PtB#p{BMgMmP4m5k3K zkCAwz_i(sD+cnHvTgO=5u+AnTULcJb*5SgEtA}Nwu@Frrk6}z@{MvRsh=%@|)y@mA zCAm%mGH2#CvC4@$sv3K-`I1R!0EB?MdZ8@4{$ukD{?p7cY7@H9+fMCFyt6Mu6pC|Q?H-+Ig=V*hwW*FvlZB} zZI*zarQ@K+@Z)B)0Q6;XJvrz!sLg?A?cu0#0R!#_z}L0`J*s{IS+m3Gn&4b|3?esNB7jCN!fu%exXP$g(7w z@z-`N32wd(fkzCqSnbVe2V=|5Jr{?=_nNNLL@7<`ThI2FjTh!$H^xW#hVR4n*);c} ze5&Kum<-s(hux#GHeIV+4aMTZb!iKwTqTi;77G(Hmm90IJ1*IZLOEeC8UuO0(v?#O zyzHdcew5?(LWeEuLb`0YcrF??mKwgtSrBLZVWd#VCL|rXOYsjzOh0C}G-&mi*Me-@ zmLp-gDS933Y2+Mno4h^kUaef}sauQ$dmk4OV@ea|c?MDPe!gJFl@-WFRZeYXtMSU% z_Y<>Qco@K3uFtUbvB7HUqHx&MG$RIN9c~&X>jc+m%$nj!d_dW_LZ5Ea+BAnA4=qoV zzqMUqz-~=i#_0G`H)#YtVDNr4?xGt58!wK%r8+LXAI;CvcplAX0~A=>-o} z5_VN00bN;l9@HOkiEFo!tpFs~*S4+eZ#E|(Tl1IgR^8RF04-N{5vU-?+Kn}kQ0IEf z)KsjE5nkwm`hWwyEqyK19#9}D!_Z+tRQoi*OjdhMQx{!TYzia7?YpHkgWs*Mcm1@3^Pns5X=csQb zy;~F=23Q3;m)^T)OJfY^wN~*EK<<;eJQ%j}y+Qkc2X|x+Ky);5)jxmm<=gH&na?1!?a%USP{y_^55puj1@=)nmr2YU2ic~wmxP!F0wMLGn{gyO zHrJQfxW#01txvZF)~Fi%wxDYiFA8gFJW&noWlZW=ZmTsnXQc(1C7PFhA3UjuLN(79OpQXUa-1SoD7AQ8K_A!d zut3DLvy9s&$5{n_&UJBO+C$ Date: Wed, 20 Aug 2025 17:31:08 -0500 Subject: [PATCH 51/55] Condensed and fixed array to string bug --- src/lib/Documentation/bitsandhexa.md | 77 +++++++++------------------- 1 file changed, 25 insertions(+), 52 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index d30909821..bc8fb4ec3 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -7,116 +7,89 @@ If you are unfamiliar with bitwise operations, then hopefully this documentation ###### Keep in mind that version 1.1 currently only supports binary, decimal, and hexadecimal. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. Also keep in mind Scratch has a 32 bit system and floats aren't supported yet. --- - ```scratch - +> (3) :: reporter :: #15448f +([-13] >> (3)::#15448f ``` - Signed right shift. Think of it like this: - We have a number -13 in binary: `11111111111111111111111111110011` - The sign bit at the very left is `1`, and let's say we shift it 3 places to the right without accounting for the sign. - `00011111111111111111111111111110` - That's a completely different number! (`536870899`) - For this reason, for each shift, we "duplicate" the sign bit and move it over to the left. After three shifts we end up with `-2`. - `11111111111111111111111111111110` - Obviously positive numbers wouldn't be affected drastically due to their sign bits being `0`. - ```scratch -[13] << (3) :: reporter :: #15448f +([13] \<\< (3)::#15448f ``` - Shifts the bits left by the amount requested (`1111` to `111100` if the amount was `2`). - ```scratch -[-13] >>> (3) :: reporter :: #15448f +([-13] >>> (3)::#15448f ``` - Unsigned right shift. Just shifts it to the right without caring about the sign bit: - `11111111111111111111111111110011` to `00011111111111111111111111111110` or `-13` to `536870899` - ```scratch -[-13] ↻ (3) :: reporter :: #15448f +([-13] ↻ (3)::#15448f ``` - Circular right shift: - Basically an unsigned right shift but instead of deleting bits they are looped to the 32nd bit. - ```scratch -[-13] ↺ (3) :: reporter :: #15448f +([-13] ↺ (3)::#15448f ``` - Same as before but opposite direction. --- - ```scratch -() & () | and :: reporter :: #15448f +(() & () | and::#15448f ``` - Bitwise and. ```scratch -() | () | or :: reporter :: #15448f +(() | () | or::#15448f ``` Bitwise or. ```scratch -() ^ () | xor :: reporter :: #15448f +(() ^ () | xor::#15448f ``` Bitwise exclusive or (returns `1` if both bits are different). ```scratch -~() | not :: reporter :: #15448f +(~() | not::#15448f ``` Bitwise not. ```scratch -~() & () | nand :: reporter :: #15448f +(~() & () | nand::#15448f ``` Bitwise nand (`0` if both inputs are on). ```scratch -~() | () | nor :: reporter :: #15448f +(~() | () | nor::#15448f ``` Bitwise nor (`1` if both inputs are off). ```scratch -~() ^ () | xnor :: reporter :: #15448f +(~() ^ () | xnor::#15448f ``` Bitwise exclusive nor (`1` if both inputs are the same). @@ -128,7 +101,7 @@ These blocks are more experimental and definitely require updates here and there --- ```scratch -character (0) of [f] to [UTF-16 v] in [decimal v] :: #15448f :: reporter +(character (0) of [f] to [UTF-16 v] in [decimal v]::#15448f ``` Takes in a string and applies @@ -139,7 +112,7 @@ Takes in a string and applies `codePointAt` is used for Unicode. ```scratch -number (41) using [UTF-16 v] in [decimal v] to character :: #15448f :: reporter +(number (41) using [UTF-16 v] in [decimal v] to character::#15448f ``` Takes in a number and applies @@ -150,13 +123,13 @@ String.fromCharCode(number); `fromCodePoint` is used for Unicode. ```scratch -(::ring)[foo?!] to [UTF-16 v] array in [decimal v](::ring) :: ring control :: #15448f +(::ring)[foo?!] to [UTF-16 v] array in [decimal v](::ring)::ring control :: #15448f ``` Takes in an array and turns it into a string. ```scratch -[UTF-16] array ((::ring)(::ring):: ring control :: #0a094f) in [decimal v] to string :: #15448f :: reporter +([UTF-16 v] array ((::ring)(::ring):: ring control :: #0a094f) in [decimal v] to string::#15448f ``` Takes in an array and returns a string. @@ -164,25 +137,25 @@ Takes in an array and returns a string. --- ```scratch -reverse endianness of (37) in [decimal v] :: #15448f :: reporter +(reverse endianness of (37) in [decimal v]::#15448f ``` Switches the byte order of the provided number. ```scratch -0x () :: #15448f :: reporter +(0x ()::#15448f ``` Takes in a hexadecimal number and returns a decimal. ```scratch -0b () :: #15448f :: reporter +(0b ()::#15448f ``` Takes in a binary number and returns a decimal. ```scratch -0o () :: #15448f :: reporter +(0o ()::#15448f ``` Takes in an octal number and returns a decimal. @@ -192,13 +165,13 @@ Takes in an octal number and returns a decimal. These blocks probably won't work with extra blocks and *might* break normal blocks (or at least show unexpected behavior). ```scratch -use a [static v] length for binary :: #15448f +use a [static v] length for binary::#15448f ``` Changes the representation of binary numbers. Two's complement is applied to the most significant bit provided rather than the 32nd bit in dynamic mode. ```scratch - + Date: Wed, 20 Aug 2025 18:26:00 -0500 Subject: [PATCH 52/55] Documentation button opens new tab Instead of replacing your existing tab's url --- static/extensions/BurningHot687/bitsandhexa.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index f5c78af06..ddd36890e 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -627,7 +627,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } bitwiseDocumentationButton() { - window.location.href = "https://extensions.penguinmod.com/docs/bitsandhexa"; + window.open("https://extensions.penguinmod.com/docs/bitsandhexa"); } binaryLengthGetter(args) { From 0c45434de66d7ffcb46008548abd2472ae77e5d7 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Sat, 23 Aug 2025 19:25:47 -0500 Subject: [PATCH 53/55] Octals + Single-Precision Floats Added --- .../extensions/BurningHot687/bitsandhexa.js | 109 +++++++++++++++--- 1 file changed, 91 insertions(+), 18 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index ddd36890e..a3aa7bce3 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -11,15 +11,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI /* By BurningHot687 (Raichu-Model or Raichu-Rig on Scratch). In case you can't tell I have basically no idea what I'm doing lol. What even is this license :sob: - oh all the other blocks assume you are using decimal input unless it's shown to be hexadecimal - TO-DO: - - Get feedback - */ -// V1.1.2.7 +// V1.3.2.4 (function(Scratch){ "use strict"; @@ -38,7 +34,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI let fullLength = true; let selLengthIsFull = true; let extOpen = false; - let basesArray = ["decimal", "binary", "hexadecimal"]; + let basesArray = ["decimal", "binary", "hexadecimal", "octal"]; const icon = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDEiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1Ii8+CiAgPGc+CiAgICA8cG9seWdvbiBjbGFzcz0ic3QwIiBwb2ludHM9IjE3NC4wNiAxNC4wMSAxMTkuMjEgMTQuMDEgOTEuNzkgNjEuNTEgMTE5LjIxIDEwOS4wMSAxNzQuMDYgMTA5LjAxIDIwMS40OSA2MS41MSAxNzQuMDYgMTQuMDEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjY1LjY1IiBjeT0iMTIyLjI2IiByPSI0Mi4xNCIvPgogICAgPHJlY3QgY2xhc3M9InN0MCIgeD0iMTE3LjE3IiB5PSIxMTcuOCIgd2lkdGg9Ijc0LjE4IiBoZWlnaHQ9IjkzLjE5IiByeD0iMTIiIHJ5PSIxMiIvPgogIDwvZz4KPC9zdmc+"; const iconCircle = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjUgMjI1Ij4KICA8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjkuNS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogMi4xLjAgQnVpbGQgMTQxKSAgLS0+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5zdDAgewogICAgICAgIGZpbGw6ICMxNDY0OGE7CiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5zdDIgewogICAgICAgIGZpbGw6ICMxYjQ2OGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxyZWN0IGNsYXNzPSJzdDIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyMjUiIGhlaWdodD0iMjI1IiByeD0iMTEyLjUiIHJ5PSIxMTIuNSIvPgogIDxnPgogICAgPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxNjMuODUgMzAuMzQgMTE4LjEgMzAuMzQgOTUuMjIgNjkuOTcgMTE4LjEgMTA5LjU5IDE2My44NSAxMDkuNTkgMTg2LjczIDY5Ljk3IDE2My44NSAzMC4zNCIvPgogICAgPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iNzMuNDIiIGN5PSIxMjAuNjQiIHI9IjM1LjE1Ii8+CiAgICA8cmVjdCBjbGFzcz0ic3QxIiB4PSIxMTYuNCIgeT0iMTE2LjkyIiB3aWR0aD0iNjEuODgiIGhlaWdodD0iNzcuNzQiIHJ4PSIxMC4wMSIgcnk9IjEwLjAxIi8+CiAgPC9nPgogIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik01MS41MSwxOTAuMjNjLTMuNjksMC0zLjY5LDUuNzMsMCw1LjczczMuNjktNS43MywwLTUuNzNaIi8+CiAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTcwLjk3LDE3OS4wM2MtMy42OSwwLTMuNjksNS43MywwLDUuNzNzMy42OS01LjczLDAtNS43M1oiLz4KICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNjYuNzcsMTkzLjF2MS40NGMtLjI2LS4xNS0uNTEtLjMtLjc2LS40NS0zLjE0LTEuOTYtNi4wMiwzLTIuODksNC45NSwxLjA3LjY3LDIuMTksMS4yMiwzLjM2LDEuNywxLjI4LjUzLDIuNjMsMS4wMywzLjk5LjQsMS42NS0uNzYsMi4wMy0yLjM2LDIuMDQtNC4wM3YtNC4wMWMwLTMuNjktNS43Mi0zLjY5LTUuNzMsMFoiLz4KPC9zdmc+"; @@ -73,6 +69,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return isItBinary(numString); case 2: return isItHexadecimal(numString); + case 3: + return isItOctal(numString); } }; @@ -127,8 +125,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return returnValue; }; - function chooseBaseValue(index) { - return index === 0 ? 10 : index === 1 ? 2 : 16; + function chooseBaseValue(text) { + return basesArray.indexOf(text) === 0 ? 10 : basesArray.indexOf(text) === 1 ? 2 : basesArray.indexOf(text) === 2 ? 16 : 8; }; class Extension { @@ -233,6 +231,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI arguments: { NUM: { type: Scratch.ArgumentType.STRING, + defaultValue: '0', }, }, switches: [ 'bitNum', 'octNum' ], @@ -263,6 +262,38 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, switches: [ 'hexaNum', 'bitNum' ], }, + { + opcode: 'convertSingleToBases', + text: 'convert float32 [NUM] to [BASE]', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 6.28, + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES_NO_DEC", + }, + }, + }, + { + opcode: 'convertBasesToSingle', + text: 'convert [NUM] in [BASE] to float32', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + arguments: { + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'f00', + }, + BASE: { + type: Scratch.ArgumentType.STRING, + menu: "BASES", + }, + }, + }, { opcode: "convertToLittleEndian", text: "reverse endianness of [NUM] in [BASE]", @@ -385,6 +416,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, }, + "---", { text: "Bitwise Manipulation", blockType: Scratch.BlockType.LABEL, @@ -479,6 +511,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, switches: [ "signedRightShiftBitz", "leftShiftBitz", "unsignedRightShiftBitz", "circularRightShiftBitz" ], }, + '---', { text: "Bitwise Operators", blockType: Scratch.BlockType.LABEL, @@ -617,6 +650,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI acceptReporters: false, items: ['UTF-16', 'Unicode'], }, + BASES_NO_DEC: { + acceptReporters: false, + items: basesArray.slice(1), + }, }, }; } @@ -676,7 +713,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } if (fullLength) { - computeValue = parseInt(computeValue, chooseBaseValue(basesArray.indexOf(args.FROM))); + computeValue = parseInt(computeValue, chooseBaseValue(args.FROM)); } else { switch (basesArray.indexOf(args.FROM)) { case 0: @@ -688,10 +725,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI case 2: computeValue = binaryToDecimal(leadingZeroez(computeValue) + (parseInt(computeValue, 16) >>> 0).toString(2)); break; + case 3: + computeValue = binaryToDecimal(leadingZeroez(computeValue) + (parseInt(computeValue, 8) >>> 0).toString(2)); + break; } } if (fullLength) computeValue = computeValue >> 0; + let negative = computeValue < 0; switch (basesArray.indexOf(args.BASE)) { case 0: computeValue = computeValue.toString(10); @@ -700,10 +741,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI computeValue = binaryReformat(computeValue, computeValue < 0); break; case 2: - let negative = computeValue < 0; computeValue = parseInt(binaryReformat(computeValue, negative), 2).toString(16); if (!fullLength && !negative) computeValue = "0" + computeValue; break; + case 3: + computeValue = parseInt(binaryReformat(computeValue, negative), 2).toString(8); + if (!fullLength && !negative) computeValue = "0" + computeValue; + break; default: return ""; } @@ -905,20 +949,20 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } charToBit(args) { - if (args.ENCODE == 'UTF-16') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); - if (args.ENCODE == 'Unicode') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(basesArray.indexOf(args.BASE))); + if (args.ENCODE == 'UTF-16') return args.CHAR.charCodeAt(args.NUM).toString(chooseBaseValue(args.BASE)); + if (args.ENCODE == 'Unicode') return args.CHAR.codePointAt(args.NUM).toString(chooseBaseValue(args.BASE)); } bitToChar(args) { - if (args.ENCODE == 'UTF-16') return String.fromCharCode(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); - if (args.ENCODE == 'Unicode') return String.fromCodePoint(parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE)))); + if (args.ENCODE == 'UTF-16') return String.fromCharCode(parseInt(args.NUM, chooseBaseValue(args.BASE))); + if (args.ENCODE == 'Unicode') return String.fromCodePoint(parseInt(args.NUM, chooseBaseValue(args.BASE))); } stringToBitArray(args) { let computeValue = []; for (let i = 0; i < args.STR.length; i++) { - if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.charCodeAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); - if (args.ENCODE == 'Unicode') computeValue.push(args.STR.codePointAt(i).toString(args.BASE === 'decimal' ? 10 : args.BASE === 'binary' ? 2 : 16)); + if (args.ENCODE == 'UTF-16') computeValue.push(args.STR.charCodeAt(i).toString(chooseBaseValue(args.BASE))); + if (args.ENCODE == 'Unicode') computeValue.push(args.STR.codePointAt(i).toString(chooseBaseValue(args.BASE))); } return new jwArray.Type(computeValue); } @@ -928,7 +972,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (myArray.length === 0) return ''; let computeValue = ''; for (let i = 0; i < myArray.length; i++) { - let charValue = parseInt(myArray[i], chooseBaseValue(basesArray.indexOf(args.BASE))); + let charValue = parseInt(myArray[i], chooseBaseValue(args.BASE)); computeValue = computeValue.concat(args.ENCODE === 'UTF-16' ? String.fromCharCode(charValue) : String.fromCodePoint(charValue)); } return computeValue; @@ -936,12 +980,41 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI convertToLittleEndian(args) { - let computeValue = parseInt(args.NUM, chooseBaseValue(basesArray.indexOf(args.BASE))); + let computeValue = parseInt(args.NUM, chooseBaseValue(args.BASE)); computeValue = new Int32Array([computeValue]); computeValue.reverse(); const myDataView = new DataView(computeValue.buffer); return myDataView.getInt32(0, false); } + + convertSingleToBases(args) { + // https://stackoverflow.com/questions/25942516/double-to-byte-array-conversion-in-javascript is where I found this solution + // If I don't keep snoozing this Copilot I get jumpscared by it being smarter and faster than me 0_0' + let computeValue = parseFloat(args.NUM); + let buffer = new ArrayBuffer(4); + let intArray = new Int32Array(buffer); + let floatArray = new Float32Array(buffer); + floatArray[0] = computeValue; + + let binaryString = ''; + for (let i = floatArray.byteLength; i > 0; i--) { + let byte = (intArray[0] >> ((i - 1) * 8)) & 0xFF; + binaryString += byte.toString(chooseBaseValue(args.BASE)).padStart(basesArray.indexOf(args.BASE) == 1 ? 8 : basesArray.indexOf(args.BASE) == 2 ? 2 : 3, '0'); + } + + return binaryString; + } + + convertBasesToSingle(args) { + let computeValue = parseInt(args.NUM, chooseBaseValue(args.BASE)); + if (!testForFormat(computeValue, args.BASE)) { + return ""; + } + if ((computeValue >>> 0).toString(2).length > 32) return ''; + let myDataView = new DataView(new ArrayBuffer(4)); + myDataView.setInt32(0, computeValue, false); + return myDataView.getFloat32(0, false); + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file From 74eb25d01e354d24c7634ddf263c929a11b6d4a9 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Sat, 23 Aug 2025 19:34:08 -0500 Subject: [PATCH 54/55] version 1.3 --- src/lib/Documentation/bitsandhexa.md | 29 +++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/lib/Documentation/bitsandhexa.md b/src/lib/Documentation/bitsandhexa.md index bc8fb4ec3..bad4709ce 100644 --- a/src/lib/Documentation/bitsandhexa.md +++ b/src/lib/Documentation/bitsandhexa.md @@ -1,10 +1,10 @@ -# Bitwise+ v1.1 +# Bitwise+ v1.3 ## Bitwise Operations for Decimals, Binary, and Hexadecimal ### By BurningHot687/Raichu-Model/-Rig -If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation). +If you are unfamiliar with bitwise operations, then hopefully this documentation can help you. If you still need further reading, you may go to this [Wikipedia Article](https://en.wikipedia.org/wiki/Bitwise_operation). I do not claim to be an expert, so these explanations might not be the best unless you've got the context for them. -###### Keep in mind that version 1.1 currently only supports binary, decimal, and hexadecimal. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. Also keep in mind Scratch has a 32 bit system and floats aren't supported yet. +###### Keep in mind that version 1.3 currently only supports binary, decimal, hexadecimal, and octals. All outputs, unless specified otherwise, are going to be in decimal. All inputs, unless specified otherwise, are assumed decimal unless there is a hexadecimal character within it. Also keep in mind Scratch has a 32 bit system. --- ```scratch @@ -136,12 +136,6 @@ Takes in an array and returns a string. --- -```scratch -(reverse endianness of (37) in [decimal v]::#15448f -``` - -Switches the byte order of the provided number. - ```scratch (0x ()::#15448f ``` @@ -160,6 +154,23 @@ Takes in a binary number and returns a decimal. Takes in an octal number and returns a decimal. +```scratch +(convert float 32 (6.28) to [binary v]::#15448f +``` + +Takes in a single-precision float (32 bits) and turns it into the requested base. + +```scratch +(convert [f00] in [hexadecimal v] to float 32::#15448f +``` +Takes in a number, reads it in the assigned base, and converts it into a float32. Because of the way floats are stored, using the above block as the number input in this block would most likely result in a different number being outputted, with a few exceptions. + +```scratch +(reverse endianness of (37) in [decimal v]::#15448f +``` + +Switches the byte order of the provided number. + --- These blocks probably won't work with extra blocks and *might* break normal blocks (or at least show unexpected behavior). From 5bbb6310c48f92384750519e1c0de6ef6274b7d2 Mon Sep 17 00:00:00 2001 From: BurningHot687 <222676217+BurningHot687@users.noreply.github.com> Date: Sun, 31 Aug 2025 13:18:56 -0500 Subject: [PATCH 55/55] Added Constants + Turbowarp Compatibility Also get some hexadecimal or octal from an index but at this point these blocks are enough, no more needed. Turbowarp compatibility is nice, now you have to figure out arrays yourself hah! ;3 --- .../extensions/BurningHot687/bitsandhexa.js | 165 ++++++++++++++++-- 1 file changed, 155 insertions(+), 10 deletions(-) diff --git a/static/extensions/BurningHot687/bitsandhexa.js b/static/extensions/BurningHot687/bitsandhexa.js index a3aa7bce3..5dc3a71b9 100644 --- a/static/extensions/BurningHot687/bitsandhexa.js +++ b/static/extensions/BurningHot687/bitsandhexa.js @@ -15,7 +15,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI - Get feedback */ -// V1.3.2.4 +// V1.3.5.1 (function(Scratch){ "use strict"; @@ -24,6 +24,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI throw new Error("This extension has to be used unsandboxed, please."); } + const extraFeaturesOn = Scratch.extensions.isPenguinMod; + // yo thanks PackGod, or jwlong or whatever you like to call yourself let jwArray = { Type: class { }, @@ -131,7 +133,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI class Extension { constructor() { - if (!vm.jwArray) vm.extensionManager.loadExtensionIdSync('jwArray'); jwArray = vm.jwArray; + if (extraFeaturesOn) if (!vm.jwArray) vm.extensionManager.loadExtensionIdSync('jwArray'); jwArray = vm.jwArray; } getInfo() { @@ -182,7 +184,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, }, - { + ...extraFeaturesOn ? [{ opcode: "stringToBitArray", text: "[STR] to [ENCODE] array in [BASE]", arguments: { @@ -200,8 +202,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, }, ...jwArray.Block - }, - { + },] : [], + ...extraFeaturesOn ? [{ opcode: "bitArrayToString", text: "[ENCODE] array [ARRAY] in [BASE] to string", blockType: Scratch.BlockType.REPORTER, @@ -216,8 +218,62 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI menu: "BASES", }, }, - }, + },] : [], "---", + { + text: "Constants", + blockType: Scratch.BlockType.LABEL, + }, + { + opcode: 'largestInt', + text: 'largest positive integer', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'smallestInt', 'largestUint', 'largestPosFloat', 'smallestPosFloat', 'smallestNegativeFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'smallestInt', + text: 'smallest negative integer', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'largestUint', 'largestPosFloat', 'smallestPosFloat', 'smallestNegativeFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'largestUint', + text: 'largest unsigned integer', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'smallestInt', 'largestPosFloat', 'smallestPosFloat', 'smallestNegativeFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'largestPosFloat', + text: 'largest positive float', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'smallestInt', 'largestUint', 'smallestPosFloat', 'smallestNegativeFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'smallestPosFloat', + text: 'smallest positive float', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'smallestInt', 'largestUint', 'largestPosFloat', 'smallestNegativeFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'smallestNegativeFloat', + text: 'smallest negative float', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'smallestInt', 'largestUint', 'largestPosFloat', 'smallestPosFloat', 'largestNegativeFloat' ], + }, + { + opcode: 'largestNegativeFloat', + text: 'largest negative float', + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + switches: [ 'largestInt', 'smallestInt', 'largestUint', 'largestPosFloat', 'smallestPosFloat', 'smallestNegativeFloat' ], + }, + '---', { text: "Utilities", blockType: Scratch.BlockType.LABEL, @@ -264,7 +320,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: 'convertSingleToBases', - text: 'convert float32 [NUM] to [BASE]', + text: 'float32 [NUM] to [BASE]', blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -280,7 +336,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: 'convertBasesToSingle', - text: 'convert [NUM] in [BASE] to float32', + text: '[NUM] in [BASE] to float32', blockType: Scratch.BlockType.REPORTER, disableMonitor: true, arguments: { @@ -360,7 +416,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI opcode: "bitwiseDocumentationButton", text: "Open Documentation", blockType: Scratch.BlockType.BUTTON, - // hideFromPalette: true, }, { opcode: "isNumActuallyBase", @@ -380,7 +435,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }, { opcode: "convertBaseTypesBitW", - text: "convert [NUM] from [FROM] to [BASE]", + text: "[NUM] from [FROM] to [BASE]", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, // allowDropAnywhere: true, could potentially save on blocks in minor use cases and doesn't harm otherwise? @@ -402,6 +457,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI { opcode: "getBitAtIdx", text: "get bit at index [IDX] of [NUM]", + switchText: "get bit", blockType: Scratch.BlockType.REPORTER, disableMonitor: true, allowDropAnywhere: true, @@ -415,6 +471,45 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI defaultValue: '13', }, }, + switches: [ "getHexAtIdx", "getOctAtIdx" ], + }, + { + opcode: "getHexAtIdx", + text: "get hex at index [IDX] of [NUM]", + switchText: "get hex", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + allowDropAnywhere: true, + arguments: { + IDX: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 0, + }, + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'de5', + }, + }, + switches: [ "getBitAtIdx", "getOctAtIdx" ], + }, + { + opcode: "getOctAtIdx", + text: "get octal at index [IDX] of [NUM]", + switchText: "get octal", + blockType: Scratch.BlockType.REPORTER, + disableMonitor: true, + allowDropAnywhere: true, + arguments: { + IDX: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: 1, + }, + NUM: { + type: Scratch.ArgumentType.STRING, + defaultValue: '213', + }, + }, + switches: [ "getBitAtIdx", "getHexAtIdx" ], }, "---", { @@ -759,6 +854,28 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return getBitAt(args.NUM, args.IDX); } + getHexAtIdx(args) { + if (args.IDX > 7 || args.IDX < 0) return ""; + let cValue = args.NUM; + if (!(isItDecimal(cValue) || isItHexadecimal(cValue))) return ""; + if (isItHexadecimal(cValue) && /[abcdef]/i.test(cValue)) { + cValue = "0x" + cValue; + } + if (args.IDX > parseInt(cValue).toString(16).length && !fullLength) return ""; + return ((parseInt(cValue) >>> args.IDX * 4) & 15).toString(16); + } + + getOctAtIdx(args) { + if (args.IDX > 10 || args.IDX < 0) return ""; + let cValue = args.NUM; + if (!(isItDecimal(cValue) || isItHexadecimal(cValue))) return ""; + if (isItHexadecimal(cValue) && /[abcdef]/i.test(cValue)) { + cValue = "0x" + cValue; + } + if (args.IDX > parseInt(cValue).toString(8).length && !fullLength) return ""; + return ((parseInt(cValue) >>> args.IDX * 3) & 7).toString(8); + } + signedRightShiftBitz(args) { let computeValue = args.NUM; if (!(isItDecimal(computeValue) || isItHexadecimal(computeValue))) return ""; @@ -1015,6 +1132,34 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI myDataView.setInt32(0, computeValue, false); return myDataView.getFloat32(0, false); } + + largestInt() { + return 0x7fffffff >> 0; + } + + smallestInt() { + return 0x80000000 >> 0; + } + + largestUint() { + return 0xffffffff >>> 0; + } + + largestPosFloat() { + return 3.4028235e+38; + } + + smallestPosFloat() { + return 1.4012985e-45; + } + + smallestNegativeFloat() { + return -3.4028235e+38; + } + + largestNegativeFloat() { + return -1.4012985e-45; + } } Scratch.extensions.register(new Extension()); })(Scratch); \ No newline at end of file