commit 1b8091e26b13c754bf98694a0c4db9a964ff18de Author: Signal Date: Sun Nov 9 16:29:33 2025 -0500 And so it begins... diff --git a/game.conf b/game.conf new file mode 100644 index 0000000..b9a3024 --- /dev/null +++ b/game.conf @@ -0,0 +1,8 @@ +name = artifact_one +title = Artifact +description = TBD +allowed_mapgens = singlenode +disallowed_mapgens = v5, v7, flat, fractal, valleys, carpathian, v6 +min_minetest_version = 5.10 +disabled_settings = !enable_damage, creative_mode, enable_server +author = Signal diff --git a/mods/artifact_base/init.lua b/mods/artifact_base/init.lua new file mode 100644 index 0000000..1844dab --- /dev/null +++ b/mods/artifact_base/init.lua @@ -0,0 +1,40 @@ +-- "I'll stop calling it Minetest when it stops being one." +minetest = core + +artifact = { + debug = true +} + +-- For brevity. +function include(file) + dofile(minetest.get_modpath(minetest.get_current_modname()).."/"..file) +end + +function enum(cases) + local out = {} + local i = 0 + for _, x in ipairs(cases) do + out[x] = i + i = i +1 + end + return out +end + +say = minetest.chat_send_all + +minetest.register_lbm{ + name = ":artifact:on_load", + nodenames = {"group:call_on_load"}, + action = function(pos, node) + minetest.registered_nodes[node.name].on_load(pos) + end +} + +if artifact.debug then + minetest.register_chatcommand("chest", { + func = function(name, args) + minetest.registered_chatcommands.giveme.func(name, "chest_with_everything:chest") + end + }) +end + diff --git a/mods/artifact_base/mod.conf b/mods/artifact_base/mod.conf new file mode 100644 index 0000000..8577247 --- /dev/null +++ b/mods/artifact_base/mod.conf @@ -0,0 +1 @@ +name = artifact_base \ No newline at end of file diff --git a/mods/artifact_characters/init.lua b/mods/artifact_characters/init.lua new file mode 100644 index 0000000..913dc36 --- /dev/null +++ b/mods/artifact_characters/init.lua @@ -0,0 +1,35 @@ + +local ns = artifact + +function ns.apply_key(m) + m.object:set_properties { + textures = {"artifact_key.png"}, + visual_size = vector.new(1,1,1) *0.88, + eye_height = 1.6 + } + m.eye_height = 1.6 +end + +function ns.apply_vix(m) + m.object:set_properties { + textures = {"artifact_vix.png"}, + visual_size = vector.new(1,1,1) *0.8, + eye_height = 1.5 + } + m.eye_height = 1.5 +end + +function ns.swap_character(m) + if m.character == "vix" then + m:set_character("key") + ns.apply_key(m) + else + m:set_character("vix") + ns.apply_vix(m) + end +end + + + +include "key.lua" +include "vix.lua" diff --git a/mods/artifact_characters/key.lua b/mods/artifact_characters/key.lua new file mode 100644 index 0000000..3dd6805 --- /dev/null +++ b/mods/artifact_characters/key.lua @@ -0,0 +1,3 @@ + +local ns = artifact + diff --git a/mods/artifact_characters/mod.conf b/mods/artifact_characters/mod.conf new file mode 100644 index 0000000..c522938 --- /dev/null +++ b/mods/artifact_characters/mod.conf @@ -0,0 +1,2 @@ +name = artifact_characters +depends = artifact_story \ No newline at end of file diff --git a/mods/artifact_characters/models/artifact_character.gltf b/mods/artifact_characters/models/artifact_character.gltf new file mode 100644 index 0000000..42cf1a3 --- /dev/null +++ b/mods/artifact_characters/models/artifact_character.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.12.5 glTF exporter"},"scenes":[{"nodes":[9],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[0,15,0],"name":"Head"},{"translation":[0,15,0],"name":"Body"},{"translation":[3.125,13.75,0],"name":"RightArm"},{"translation":[-3.125,13.75,0],"name":"LeftArm"},{"translation":[0.06250000000000006,-6.875,-0.9375],"name":"RightLegFoot"},{"translation":[1.1875,7.5,0],"name":"RightLeg","children":[4]},{"translation":[-0.06250000000000006,-6.875,-0.9375],"name":"LeftLegFoot"},{"translation":[-1.1875,7.5,0],"name":"LeftLeg","children":[6]},{"name":"root","children":[0,1,2,3,5,7]},{"name":"root","mesh":0,"children":[8],"skin":0}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":4032,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":8064,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":10752,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":13440,"byteLength":5376,"target":34962,"byteStride":16},{"buffer":0,"byteOffset":18816,"byteLength":1008,"target":34963},{"buffer":0,"byteOffset":19824,"byteLength":576},{"buffer":0,"byteOffset":20400,"byteLength":20},{"buffer":0,"byteOffset":20420,"byteLength":80},{"buffer":0,"byteOffset":20500,"byteLength":36},{"buffer":0,"byteOffset":20536,"byteLength":108},{"buffer":0,"byteOffset":20644,"byteLength":20},{"buffer":0,"byteOffset":20664,"byteLength":80},{"buffer":0,"byteOffset":20744,"byteLength":36},{"buffer":0,"byteOffset":20780,"byteLength":144},{"buffer":0,"byteOffset":20924,"byteLength":36},{"buffer":0,"byteOffset":20960,"byteLength":144},{"buffer":0,"byteOffset":21104,"byteLength":36},{"buffer":0,"byteOffset":21140,"byteLength":144},{"buffer":0,"byteOffset":21284,"byteLength":36},{"buffer":0,"byteOffset":21320,"byteLength":144},{"buffer":0,"byteOffset":21464,"byteLength":36},{"buffer":0,"byteOffset":21500,"byteLength":144},{"buffer":0,"byteOffset":21644,"byteLength":36},{"buffer":0,"byteOffset":21680,"byteLength":144}],"buffers":[{"byteLength":21824,"uri":"data:application/octet-stream;base64,AAAgQAAAoEEAACBAAAAgQAAAoEEAACDAAAAgQAAAcEEAACBAAAAgQAAAcEEAACDAAAAgwAAAoEEAACDAAAAgwAAAoEEAACBAAAAgwAAAcEEAACDAAAAgwAAAcEEAACBAAAAgwAAAoEEAACDAAAAgQAAAoEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgwAAAcEEAACDAAAAgQAAAcEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgQAAAoEEAACDAAAAgwAAAoEEAACDAAAAgQAAAcEEAACDAAAAgwAAAcEEAACDAAAA0QACAokEAADRAAAA0QACAokEAADTAAAA0QAAAa0EAADRAAAA0QAAAa0EAADTAAAA0wACAokEAADTAAAA0wACAokEAADRAAAA0wAAAa0EAADTAAAA0wAAAa0EAADRAAAA0wACAokEAADTAAAA0QACAokEAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0wAAAa0EAADTAAAA0QAAAa0EAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0QACAokEAADTAAAA0wACAokEAADTAAAA0QAAAa0EAADTAAAA0wAAAa0EAADTAAAAgQAAAcEEAAHA/AAAgQAAAcEEAAHC/AAAgQAAA8EAAAHA/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgwAAA8EAAAHC/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgwAAA8EAAAHC/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHC/AAAgQAAA8EAAAHC/AAAgwAAA8EAAAHC/AAAqQACAckEAAIw/AAAqQACAckEAAIy/AAAqQAAA60AAAIw/AAAqQAAA60AAAIy/AAAqwACAckEAAIy/AAAqwACAckEAAIw/AAAqwAAA60AAAIy/AAAqwAAA60AAAIw/AAAqwACAckEAAIy/AAAqQACAckEAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqwAAA60AAAIy/AAAqQAAA60AAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqQACAckEAAIy/AAAqwACAckEAAIy/AAAqQAAA60AAAIy/AAAqwAAA60AAAIy/AACMQAAAcEEAAHA/AACMQAAAcEEAAHC/AACMQAAA8EAAAHA/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHC/AAAgQAAAcEEAAHA/AAAgQAAA8EAAAHC/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AAAgQAAA8EAAAHC/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHC/AACMQAAA8EAAAHC/AAAgQAAA8EAAAHC/AACRQACAckEAAIw/AACRQACAckEAAIy/AACRQAAA60AAAIw/AACRQAAA60AAAIy/AAAWQACAckEAAIy/AAAWQACAckEAAIw/AAAWQAAA60AAAIy/AAAWQAAA60AAAIw/AAAWQACAckEAAIy/AACRQACAckEAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AAAWQAAA60AAAIy/AACRQAAA60AAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AACRQACAckEAAIy/AAAWQACAckEAAIy/AACRQAAA60AAAIy/AAAWQAAA60AAAIy/AAAgwAAAcEEAAHA/AAAgwAAAcEEAAHC/AAAgwAAA8EAAAHA/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHC/AACMwAAAcEEAAHA/AACMwAAA8EAAAHC/AACMwAAA8EAAAHA/AACMwAAAcEEAAHC/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AACMwAAA8EAAAHC/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHC/AAAgwAAA8EAAAHC/AACMwAAA8EAAAHC/AAAWwACAckEAAIw/AAAWwACAckEAAIy/AAAWwAAA60AAAIw/AAAWwAAA60AAAIy/AACRwACAckEAAIy/AACRwACAckEAAIw/AACRwAAA60AAAIy/AACRwAAA60AAAIw/AACRwACAckEAAIy/AAAWwACAckEAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AACRwAAA60AAAIy/AAAWwAAA60AAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AAAWwACAckEAAIy/AACRwACAckEAAIy/AAAWwAAA60AAAIy/AACRwAAA60AAAIy/AAAcQAAA8EAAAHA/AAAcQAAA8EAAAHC/AAAcQAAAAAAAAHA/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHC/AACAvQAA8EAAAHA/AACAvQAAAAAAAHC/AACAvQAAAAAAAHA/AACAvQAA8EAAAHC/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAAHC/AAAmQAAA9UAAAIw/AAAmQAAA9UAAAIy/AAAmQAAAIL4AAIw/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIy/AABgvgAA9UAAAIw/AABgvgAAIL4AAIy/AABgvgAAIL4AAIw/AABgvgAA9UAAAIy/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AABgvgAAIL4AAIy/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIy/AAAmQAAAIL4AAIy/AABgvgAAIL4AAIy/AAAcQAAAoD8AAHC/AAAcQAAAoD8AADTAAAAcQAAAAAAAAHC/AAAcQAAAAAAAADTAAACAvQAAoD8AADTAAACAvQAAoD8AAHC/AACAvQAAAAAAADTAAACAvQAAAAAAAHC/AACAvQAAoD8AADTAAAAcQAAAoD8AADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAADTAAAAcQAAAAAAAADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AAAcQAAAoD8AADTAAACAvQAAoD8AADTAAAAcQAAAAAAAADTAAACAvQAAAAAAADTAAACAPQAA8EAAAHA/AACAPQAA8EAAAHC/AACAPQAAAAAAAHA/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHC/AAAcwAAA8EAAAHA/AAAcwAAAAAAAAHC/AAAcwAAAAAAAAHA/AAAcwAAA8EAAAHC/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAAHC/AABgPgAA9UAAAIw/AABgPgAA9UAAAIy/AABgPgAAIL4AAIw/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIy/AAAmwAAA9UAAAIw/AAAmwAAAIL4AAIy/AAAmwAAAIL4AAIw/AAAmwAAA9UAAAIy/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AAAmwAAAIL4AAIy/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIy/AABgPgAAIL4AAIy/AAAmwAAAIL4AAIy/AACAPQAAoD8AAHC/AACAPQAAoD8AADTAAACAPQAAAAAAAHC/AACAPQAAAAAAADTAAAAcwAAAoD8AADTAAAAcwAAAoD8AAHC/AAAcwAAAAAAAADTAAAAcwAAAAAAAAHC/AAAcwAAAoD8AADTAAACAPQAAoD8AADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAADTAAACAPQAAAAAAADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AACAPQAAoD8AADTAAAAcwAAAoD8AADTAAACAPQAAAAAAADTAAAAcwAAAAAAAADTAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAOQBAAD4AgP89AEAAPgAAgDkAwH8+AID/PQDAfz4AIIA+AEAAPgDgvz4AQAA+ACCAPgDAfz4A4L8+AMB/PgDAfz4AgP89AEAAPgCA/z0AwH8+AACAOQBAAD4AAIA5AOC/PgAAgDkAIIA+AACAOQDgvz4AgP89ACCAPgCA/z0AIMA+AEAAPgDg/z4AQAA+ACDAPgDAfz4A4P8+AMB/PgBAAD4AQAA+AMB/PgBAAD4AQAA+AMB/PgDAfz4AwH8+ABAAPwBAAD4A8B8/AEAAPgAQAD8AwH8+APAfPwDAfz4AEEA/AEAAPgDwXz8AQAA+ABBAPwDAfz4A8F8/AMB/PgDwPz8AgP89ABAgPwCA/z0A8D8/AACAOQAQID8AAIA5APBfPwAAgDkAEEA/AACAOQDwXz8AgP89ABBAPwCA/z0AEGA/AEAAPgDwfz8AQAA+ABBgPwDAfz4A8H8/AMB/PgAQID8AQAA+APA/PwBAAD4AECA/AMB/PgDwPz8AwH8+AACIPgAAoD4AAKA+AACgPgAAiD4AAAA/AACgPgAAAD8AAOA+AACgPgAA+D4AAKA+AADgPgAAAD8AAPg+AAAAPwAA4D4AAKA+AACgPgAAoD4AAOA+AACIPgAAoD4AAIg+AAAQPwAAiD4AAOA+AACIPgAAED8AAKA+AADgPgAAoD4AAAA/AACgPgAAID8AAKA+AAAAPwAAAD8AACA/AAAAPwAAoD4AAKA+AADgPgAAoD4AAKA+AAAAPwAA4D4AAAA/AACIPgAAED8AAKA+AAAQPwAAiD4AAEA/AACgPgAAQD8AAOA+AAAQPwAA+D4AABA/AADgPgAAQD8AAPg+AABAPwAA4D4AABA/AACgPgAAED8AAOA+AAAEPwAAoD4AAAQ/AAAQPwAABD8AAOA+AAAEPwAAED8AABA/AADgPgAAED8AAAA/AAAQPwAAID8AABA/AAAAPwAAQD8AACA/AABAPwAAoD4AABA/AADgPgAAED8AAKA+AABAPwAA4D4AAEA/ABAkPwAgoD4A8C8/ACCgPgAQJD8A4P8+APAvPwDg/z4AEDw/ACCgPgDwRz8AIKA+ABA8PwDg/z4A8Ec/AOD/PgDwOz8A4J8+ABAwPwDgnz4A8Ds/ACCIPgAQMD8AIIg+APBHPwAgiD4AEDw/ACCIPgDwRz8A4J8+ABA8PwDgnz4AEEg/ACCgPgDwUz8AIKA+ABBIPwDg/z4A8FM/AOD/PgAQMD8AIKA+APA7PwAgoD4AEDA/AOD/PgDwOz8A4P8+AAAkPwAAED8AADA/AAAQPwAAJD8AAEA/AAAwPwAAQD8AAEA/AAAQPwAATD8AABA/AABAPwAAQD8AAEw/AABAPwAAPD8AABA/AAAwPwAAED8AADw/AAAEPwAAMD8AAAQ/AABIPwAABD8AADw/AAAEPwAASD8AABA/AAA8PwAAED8AAEw/AAAQPwAAWD8AABA/AABMPwAAQD8AAFg/AABAPwAAMD8AABA/AAA8PwAAED8AADA/AABAPwAAPD8AAEA/ABAEPwAQUD8A8A8/ABBQPwAQBD8A8H8/APAPPwDwfz8AEBw/ABBQPwDwJz8AEFA/ABAcPwDwfz8A8Cc/APB/PwDwGz8A8E8/ABAQPwDwTz8A8Bs/ABBEPwAQED8AEEQ/APAnPwAQRD8AEBw/ABBEPwDwJz8A8E8/ABAcPwDwTz8AECg/ABBQPwDwMz8AEFA/ABAoPwDwfz8A8DM/APB/PwAQED8AEFA/APAbPwAQUD8AEBA/APB/PwDwGz8A8H8/AABAPwAAUD8AAEw/AABQPwAAQD8AAIA/AABMPwAAgD8AAFw/AABQPwAAaD8AAFA/AABcPwAAgD8AAGg/AACAPwAAXD8AAFA/AABQPwAAUD8AAFw/AABEPwAAUD8AAEQ/AABoPwAARD8AAFw/AABEPwAAaD8AAFA/AABcPwAAUD8AAGw/AABQPwAAeD8AAFA/AABsPwAAgD8AAHg/AACAPwAAUD8AAFA/AABcPwAAUD8AAFA/AACAPwAAXD8AAIA/AACAPAAAoD4AAIA9AACgPgAAgDwAAAA/AACAPQAAAD8AAAA+AACgPgAAMD4AAKA+AAAAPgAAAD8AADA+AAAAPwAAAD4AAKA+AACAPQAAoD4AAAA+AACIPgAAgD0AAIg+AABAPgAAiD4AAAA+AACIPgAAQD4AAKA+AAAAPgAAoD4AAEA+AACgPgAAgD4AAKA+AABAPgAAAD8AAIA+AAAAPwAAgD0AAKA+AAAAPgAAoD4AAIA9AAAAPwAAAD4AAAA/AACCPAAQED8AAH89ABAQPwAAgjwA8D8/AAB/PQDwPz8AQAA+ABAQPwDALz4AEBA/AEAAPgDwPz8AwC8+APA/PwCA/z0A8A8/AICAPQDwDz8AgP89ABAEPwCAgD0AEAQ/AMA/PgAQBD8AQAA+ABAEPwDAPz4A8A8/AEAAPgDwDz8AQDA+ABAQPwDAbz4AEBA/AEAwPgDwPz8AwG8+APA/PwCAgD0AEBA/AID/PQAQED8AgIA9APA/PwCA/z0A8D8/ABBIPwAQAD8A8FM/ABAAPwAQSD8A8Ac/APBTPwDwBz8AEGQ/ABAAPwDwbz8AEAA/ABBkPwDwBz8A8G8/APAHPwDwYz8A4P8+ABBUPwDg/z4A8GM/ACDoPgAQVD8AIOg+APBzPwAg6D4AEGQ/ACDoPgDwcz8A4P8+ABBkPwDg/z4AEHA/ABAAPwDwfz8AEAA/ABBwPwDwBz8A8H8/APAHPwAQVD8AEAA/APBjPwAQAD8AEFQ/APAHPwDwYz8A8Ac/AACIPgAAUD8AAKA+AABQPwAAiD4AAIA/AACgPgAAgD8AAMA+AABQPwAA2D4AAFA/AADAPgAAgD8AANg+AACAPwAAwD4AAFA/AACgPgAAUD8AAMA+AABEPwAAoD4AAEQ/AADgPgAARD8AAMA+AABEPwAA4D4AAFA/AADAPgAAUD8AAOA+AABQPwAAAD8AAFA/AADgPgAAgD8AAAA/AACAPwAAoD4AAFA/AADAPgAAUD8AAKA+AACAPwAAwD4AAIA/AACCPAAQUD8AAH89ABBQPwAAgjwA8H8/AAB/PQDwfz8AQAA+ABBQPwDALz4AEFA/AEAAPgDwfz8AwC8+APB/PwCA/z0A8E8/AICAPQDwTz8AgP89ABBEPwCAgD0AEEQ/AMA/PgAQRD8AQAA+ABBEPwDAPz4A8E8/AEAAPgDwTz8AQDA+ABBQPwDAbz4AEFA/AEAwPgDwfz8AwG8+APB/PwCAgD0AEFA/AID/PQAQUD8AgIA9APB/PwCA/z0A8H8/AABUPwAAuD4AAGA/AAC4PgAAVD8AAMg+AABgPwAAyD4AAGA/AAC4PgAAbD8AALg+AABgPwAAyD4AAGw/AADIPgAAZD8AALg+AABUPwAAuD4AAGQ/AACgPgAAVD8AAKA+AAB0PwAAoD4AAGQ/AACgPgAAdD8AALg+AABkPwAAuD4AAGQ/AADIPgAAdD8AAMg+AABkPwAA2D4AAHQ/AADYPgAAVD8AAMg+AABkPwAAyD4AAFQ/AADYPgAAZD8AANg+AAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAGAAaABkAGgAbABkAHAAeAB0AHgAfAB0AIAAiACEAIgAjACEAJAAmACUAJgAnACUAKAAqACkAKgArACkALAAuAC0ALgAvAC0AMAAyADEAMgAzADEANAA2ADUANgA3ADUAOAA6ADkAOgA7ADkAPAA+AD0APgA/AD0AQABCAEEAQgBDAEEARABGAEUARgBHAEUASABKAEkASgBLAEkATABOAE0ATgBPAE0AUABSAFEAUgBTAFEAVABWAFUAVgBXAFUAWABaAFkAWgBbAFkAXABeAF0AXgBfAF0AYABiAGEAYgBjAGEAZABmAGUAZgBnAGUAaABqAGkAagBrAGkAbABuAG0AbgBvAG0AcAByAHEAcgBzAHEAdAB2AHUAdgB3AHUAeAB6AHkAegB7AHkAfAB+AH0AfgB/AH0AgACCAIEAggCDAIEAhACGAIUAhgCHAIUAiACKAIkAigCLAIkAjACOAI0AjgCPAI0AkACSAJEAkgCTAJEAlACWAJUAlgCXAJUAmACaAJkAmgCbAJkAnACeAJ0AngCfAJ0AoACiAKEAogCjAKEApACmAKUApgCnAKUAqACqAKkAqgCrAKkArACuAK0ArgCvAK0AsACyALEAsgCzALEAtAC2ALUAtgC3ALUAuAC6ALkAugC7ALkAvAC+AL0AvgC/AL0AwADCAMEAwgDDAMEAxADGAMUAxgDHAMUAyADKAMkAygDLAMkAzADOAM0AzgDPAM0A0ADSANEA0gDTANEA1ADWANUA1gDXANUA2ADaANkA2gDbANkA3ADeAN0A3gDfAN0A4ADiAOEA4gDjAOEA5ADmAOUA5gDnAOUA6ADqAOkA6gDrAOkA7ADuAO0A7gDvAO0A8ADyAPEA8gDzAPEA9AD2APUA9gD3APUA+AD6APkA+gD7APkA/AD+AP0A/gD/AP0AAAECAQEBAgEDAQEBBAEGAQUBBgEHAQUBCAEKAQkBCgELAQkBDAEOAQ0BDgEPAQ0BEAESAREBEgETAREBFAEWARUBFgEXARUBGAEaARkBGgEbARkBHAEeAR0BHgEfAR0BIAEiASEBIgEjASEBJAEmASUBJgEnASUBKAEqASkBKgErASkBLAEuAS0BLgEvAS0BMAEyATEBMgEzATEBNAE2ATUBNgE3ATUBOAE6ATkBOgE7ATkBPAE+AT0BPgE/AT0BQAFCAUEBQgFDAUEBRAFGAUUBRgFHAUUBSAFKAUkBSgFLAUkBTAFOAU0BTgFPAU0BAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAHDBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAABwwQAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAABIwAAAXMEAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAASEAAAFzBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAJi/AADwwAAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAACgvwAAIL8AAHA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAmD8AAPDAAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAKA/AAAgvwAAcD8AAIA/AAAAAAAAAD8AAIA/AADAPwAAAEAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAIA+AAAAPwAAQD8AAIA/AACgPwAAwD8AAOA/AAAAQAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AACAPwAAwD8AAABAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/wsVHvgAAAAAAAAAAvhR7PwAAAAAAAAAAAAAAAAAAgD/CxUc+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7L4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsPgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/7mNzPgAAAAAAAAAA4Kl4PwAAAAAAAAAAAAAAAAAAgD/CxUe+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7D4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsvgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZPgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pm+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2D4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYvgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD+oqAU+AAAAAAAAAABVz30/AAAAAAAAAAAAAAAAAACAP7Z+sr0AAAAAAAAAAJ4Gfz8AAAAAAAAAAAAAAAAAAIA/PMYbPgAAAAAAAAAAQwV9PwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZvgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pk+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2L4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYPgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/qKgFPgAAAAAAAAAAVc99PwAAAAAAAAAAAAAAAAAAgD+2frK9AAAAAAAAAACeBn8/AAAAAAAAAAAAAAAAAACAPzzGGz4AAAAAAAAAAEMFfT8AAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD8="}],"accessors":[{"bufferView":0,"componentType":5126,"count":336,"max":[4.53125,20.3125,2.8125],"min":[-4.53125,-0.15625,-2.8125],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":336,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":336,"max":[0.999755859375,1],"min":[0.000244140625,0.000244140625],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":336,"max":[0,8,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":4,"componentType":5126,"count":336,"max":[0,1,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":5,"componentType":5123,"count":504,"max":[335],"min":[0],"type":"SCALAR"},{"bufferView":6,"componentType":5126,"count":9,"max":[1,0,0,0,0,1,0,0,0,0,1,0,3.125,0,0.9375,1],"min":[1,0,0,0,0,1,0,0,0,0,1,0,-3.125,-15,0,1],"type":"MAT4"},{"bufferView":7,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":8,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":9,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":10,"componentType":5126,"count":9,"max":[0,0,0],"min":[0,-1.25,0],"type":"VEC3"},{"bufferView":11,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":12,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":13,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":14,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":15,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":16,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":17,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":18,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":19,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":20,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"},{"bufferView":21,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":22,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":23,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":24,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"artifact_vix.png"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png","name":"artifact_vix.png","uri":"artifact_vix.png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2,"JOINTS_0":3,"WEIGHTS_0":4},"indices":5,"material":0}]}],"skins":[{"inverseBindMatrices":6,"joints":[8,0,1,2,3,5,4,7,6],"skeleton":8}],"animations":[{"name":"animation","samplers":[{"input":7,"output":8,"interpolation":"LINEAR"},{"input":9,"output":10,"interpolation":"LINEAR"},{"input":11,"output":12,"interpolation":"LINEAR"},{"input":13,"output":14,"interpolation":"LINEAR"},{"input":15,"output":16,"interpolation":"LINEAR"},{"input":17,"output":18,"interpolation":"LINEAR"},{"input":19,"output":20,"interpolation":"LINEAR"},{"input":21,"output":22,"interpolation":"LINEAR"},{"input":23,"output":24,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":8,"path":"translation"}},{"sampler":2,"target":{"node":1,"path":"rotation"}},{"sampler":3,"target":{"node":2,"path":"rotation"}},{"sampler":4,"target":{"node":3,"path":"rotation"}},{"sampler":5,"target":{"node":5,"path":"rotation"}},{"sampler":6,"target":{"node":4,"path":"rotation"}},{"sampler":7,"target":{"node":7,"path":"rotation"}},{"sampler":8,"target":{"node":6,"path":"rotation"}}]}]} \ No newline at end of file diff --git a/mods/artifact_characters/textures/artifact_key.png b/mods/artifact_characters/textures/artifact_key.png new file mode 100644 index 0000000..a2b8920 Binary files /dev/null and b/mods/artifact_characters/textures/artifact_key.png differ diff --git a/mods/artifact_characters/textures/artifact_key_splash.png b/mods/artifact_characters/textures/artifact_key_splash.png new file mode 100644 index 0000000..155479b Binary files /dev/null and b/mods/artifact_characters/textures/artifact_key_splash.png differ diff --git a/mods/artifact_characters/textures/artifact_key_splash_low.png b/mods/artifact_characters/textures/artifact_key_splash_low.png new file mode 100644 index 0000000..3d804ee Binary files /dev/null and b/mods/artifact_characters/textures/artifact_key_splash_low.png differ diff --git a/mods/artifact_characters/textures/artifact_swap.png b/mods/artifact_characters/textures/artifact_swap.png new file mode 100644 index 0000000..22cb490 Binary files /dev/null and b/mods/artifact_characters/textures/artifact_swap.png differ diff --git a/mods/artifact_characters/textures/artifact_vix.png b/mods/artifact_characters/textures/artifact_vix.png new file mode 100644 index 0000000..994dd14 Binary files /dev/null and b/mods/artifact_characters/textures/artifact_vix.png differ diff --git a/mods/artifact_characters/textures/artifact_vix_splash.png b/mods/artifact_characters/textures/artifact_vix_splash.png new file mode 100644 index 0000000..d87be46 Binary files /dev/null and b/mods/artifact_characters/textures/artifact_vix_splash.png differ diff --git a/mods/artifact_characters/textures/artifact_vix_splash_low.png b/mods/artifact_characters/textures/artifact_vix_splash_low.png new file mode 100644 index 0000000..5d1c625 Binary files /dev/null and b/mods/artifact_characters/textures/artifact_vix_splash_low.png differ diff --git a/mods/artifact_characters/vix.lua b/mods/artifact_characters/vix.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/artifact_hud/init.lua b/mods/artifact_hud/init.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/artifact_hud/mod.conf b/mods/artifact_hud/mod.conf new file mode 100644 index 0000000..c639afb --- /dev/null +++ b/mods/artifact_hud/mod.conf @@ -0,0 +1,2 @@ +name = artifact_hud +depends = artifact_base \ No newline at end of file diff --git a/mods/artifact_hud/textures/artifact_health_bar.png b/mods/artifact_hud/textures/artifact_health_bar.png new file mode 100644 index 0000000..b5f2ada Binary files /dev/null and b/mods/artifact_hud/textures/artifact_health_bar.png differ diff --git a/mods/artifact_hud/textures/artifact_heart.png b/mods/artifact_hud/textures/artifact_heart.png new file mode 100644 index 0000000..e3f09f5 Binary files /dev/null and b/mods/artifact_hud/textures/artifact_heart.png differ diff --git a/mods/artifact_hud/textures/artifact_heart_bg.png b/mods/artifact_hud/textures/artifact_heart_bg.png new file mode 100644 index 0000000..71a412e Binary files /dev/null and b/mods/artifact_hud/textures/artifact_heart_bg.png differ diff --git a/mods/artifact_hud/textures/artifact_heart_vix.png b/mods/artifact_hud/textures/artifact_heart_vix.png new file mode 100644 index 0000000..871e1cf Binary files /dev/null and b/mods/artifact_hud/textures/artifact_heart_vix.png differ diff --git a/mods/artifact_hud/textures/artifact_hotbar_bg.png b/mods/artifact_hud/textures/artifact_hotbar_bg.png new file mode 100644 index 0000000..4757ac4 Binary files /dev/null and b/mods/artifact_hud/textures/artifact_hotbar_bg.png differ diff --git a/mods/artifact_hud/textures/artifact_hotbar_selected_bg.png b/mods/artifact_hud/textures/artifact_hotbar_selected_bg.png new file mode 100644 index 0000000..7a87714 Binary files /dev/null and b/mods/artifact_hud/textures/artifact_hotbar_selected_bg.png differ diff --git a/mods/artifact_hud/textures/artifact_hud_splashbg.png b/mods/artifact_hud/textures/artifact_hud_splashbg.png new file mode 100644 index 0000000..0927b99 Binary files /dev/null and b/mods/artifact_hud/textures/artifact_hud_splashbg.png differ diff --git a/mods/artifact_mechanisms/basics.lua b/mods/artifact_mechanisms/basics.lua new file mode 100644 index 0000000..9d0b9b5 --- /dev/null +++ b/mods/artifact_mechanisms/basics.lua @@ -0,0 +1,14 @@ + +local function make_lever_entity(pos) + +end + +artifact.register_node("lever", { + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + on_construct = function(pos) + + end +}) diff --git a/mods/artifact_mechanisms/init.lua b/mods/artifact_mechanisms/init.lua new file mode 100644 index 0000000..bd4cc59 --- /dev/null +++ b/mods/artifact_mechanisms/init.lua @@ -0,0 +1,30 @@ + +minetest.register_entity(":display", { + initial_properties = { + pointable = false, + static_save = false + }, + on_activate = function(e) + e.object:set_armor_groups{immortal = 1} + end +}) + + + +minetest.register_entity(":test", { + initial_properties = { + visual = "sprite", + textures = {"blank.png"}, + use_texture_alpha = true, + static_save = false + }, + on_rightclick = function(e, p) + artifact.players[p:get_player_name()].interacting_with = e + end, + on_hover = function() say "!" end, + on_interact = function(e, m) + + end +}) + +include "basics.lua" diff --git a/mods/artifact_mechanisms/mod.conf b/mods/artifact_mechanisms/mod.conf new file mode 100644 index 0000000..32ee7f2 --- /dev/null +++ b/mods/artifact_mechanisms/mod.conf @@ -0,0 +1,2 @@ +name = artifact_mechanisms +depends = artifact_characters \ No newline at end of file diff --git a/mods/artifact_player/init.lua b/mods/artifact_player/init.lua new file mode 100644 index 0000000..79826fc --- /dev/null +++ b/mods/artifact_player/init.lua @@ -0,0 +1,235 @@ + +local ns = artifact +ns.players = {} +local db = minetest.get_mod_storage() + +Player = setmetatable({ + new = function(p) + local m = setmetatable({ + object = p + }, {__index = Player}) + + m.name = p:get_player_name() + m.meta = p:get_meta() + m.character = m.meta:get("character") or "key" + + m.inv = p:get_inventory() + m.inv:set_stack("main", 1, ItemStack("input")) + + -- Generic black sky, since the whole game takes place underground. + p:set_sky{ + type = "basic", + base_color = "#000", + clouds = false + } + p:set_sun{visible = false} + p:set_moon{visible = false} + p:set_stars{visible = false} + + p:set_properties { + visual = "mesh", + mesh = "artifact_character.gltf", + shaded = false + } + + if m.character == "vix" then + artifact.apply_vix(m) + else + artifact.apply_key(m) + end + + p:hud_set_flags { + healthbar = false, + breathbar = false, + hotbar = artifact.debug, + minimap = false, + basic_debug = false + } + + m:create_hud() + + m:set_hotbar_size(8) + + m.ctl = p:get_player_control() + + return m + end, + tick = function(m) + local time = minetest.get_us_time() + local p = m.object + local pos = p:get_pos() + local dir = p:get_look_dir() + m.pos = pos + m.pos.y = m.pos.y +m.eye_height + + local pointed_found = nil + m.pointed_node = nil + for x in minetest.raycast(m.pos, m.pos +(dir *5)) do + if x and x.type == "object" then + local e = x.ref:get_luaentity() + -- Ignore players. + if e then + local names_match = m.pointed_obj and (m.pointed_obj._name or m.pointed_obj.name) == (e._name or e.name) + if m.pointed_obj and not names_match then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + if m.pointed_obj.on_interact and m.interaction_marker then + m.interaction_marker:remove() + m.interaction_marker = nil + end + end + if (m.pointed_obj and not names_match and e.on_hover) or not m.pointed_obj then + if e.on_hover then + e:on_hover(m) + end + if e.on_interact then + if m.interaction_marker then m.interaction_marker:remove() end + m.interaction_marker = minetest.add_entity(e.object:get_pos(), "display") + m.interaction_marker:set_properties { + visual = "sprite", + textures = {"artifact_rmb.png"} + } + end + pointed_found = true + m.pointed_obj = e + break + elseif m.pointed_obj and names_match then + pointed_found = true + break + end + end + elseif x and x.type == "node" then + m.pointed_node = x + end + end + if not pointed_found and m.pointed_obj then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + if m.pointed_obj.on_interact and m.interaction_marker then + m.interaction_marker:remove() + m.interaction_marker = nil + end + m.pointed_obj = nil + end + local ctl = m.object:get_player_control() + + if ctl.place and not m.ctl.place and m.pointed_obj and m.pointed_obj.on_interact then + if not m.interaction_start then + m.interaction_start = time +-- m.interaction_marker = minetest.add_entity(m.pointed_obj, "display") +-- m.interaction_marker:set_properties { +-- visual = "sprite", +-- textures = {"rgt_interact_progress_0.png"} +-- } + else + if time -m.interaction_start > 1100000 then + m.interaction_marker:remove() + m.pointed_obj:on_interact(m) + elseif time -m.interaction_start > 1000000 then + m.interaction_marker:set_properties { + textures = {"artifact_rmb_100.png"} + } + elseif time -m.interaction_start > 750000 then + m.interaction_marker:set_properties { + textures = {"artifact_rmb_75.png"} + } + elseif time -m.interaction_start > 500000 then + m.interaction_marker:set_properties { + textures = {"artifact_rmb_50.png"} + } + elseif time -m.interaction_start > 250000 then + m.interaction_marker:set_properties { + textures = {"artifact_rmb_25.png"} + } + end + end + elseif not ctl.place and m.ctl.place and m.interaction_start then + m.interacting_with = nil + m.interaction_start = nil + end + + m.ctl = ctl + + end, + set_character = function(m, to) + m.character = to + m.meta:set_string("character", to) + end, + -- Initialize the player's primary HUD display based on saved state. + create_hud = function(m) + -- If called post-init, make sure we delete the previous HUD. + -- This is useful when we want to recreate the HUD in response + -- to an event, like freeing Vix. + if m.hud then + for _, x in pairs(m.hud) do + if type(x) == "table" then + for _, y in pairs(x) do + m.object:hud_remove(y) + end + else + m.object:hud_remove(x) + end + end + end + m.hud = { + key_health = m.object:hud_add { + type = "statbar", + position = {x=0.5,y=1}, + offset = {x=-27 *5,y=artifact.debug and -96 or -30}, + scale = {x=4,y=4}, + alignment = {x=-1, y=-1}, + size = {x=27,y=27}, + text = "artifact_heart_vix.png", + text2 = "artifact_heart_bg.png", + number = 20 + } + } + + if artifact.debug or artifact.story.states[artifact.story.get_state()] >= artifact.story.states.main then + + end + end, + set_hotbar_size = function(m, slots) + local p = m.object + p:hud_set_hotbar_itemcount(slots) + local list = "" + for i = 0, slots do + list = list..":"..(21*i)..",0=artifact_hotbar_bg.png" + end + p:hud_set_hotbar_image("[combine:"..(21 *slots +1).."x22"..list) + p:hud_set_hotbar_selected_image("artifact_hotbar_selected_bg.png") + end, +}, { + __call = function(_, ...) + return Player.new(...) + end +}) + +artifact.register_craftitem("input", { + inventory_image = "artifact_rmb_100.png", + on_drop = function(s, p, pos) + local m = artifact.players[p:get_player_name()] + if artifact.debug or artifat.story.state > artifact.story.states.pre_vix then + artifact.swap_character(m) + end + return s + end +}) + + +minetest.register_globalstep(function() + for _, m in pairs(artifact.players) do + m:tick() + end +end) + + +minetest.register_on_joinplayer(function(p) + artifact.players[p:get_player_name()] = Player(p) + if artifact.debug then + -- Make sure we don't have to `/grantme` a million times while testing. + minetest.registered_chatcommands.grantme.func(p:get_player_name(), "all") + end +end) diff --git a/mods/artifact_player/mod.conf b/mods/artifact_player/mod.conf new file mode 100644 index 0000000..1709a74 --- /dev/null +++ b/mods/artifact_player/mod.conf @@ -0,0 +1,2 @@ +name = artifact_player +depends = artifact_characters \ No newline at end of file diff --git a/mods/artifact_player/textures/artifact_rmb.png b/mods/artifact_player/textures/artifact_rmb.png new file mode 100644 index 0000000..1ffe228 Binary files /dev/null and b/mods/artifact_player/textures/artifact_rmb.png differ diff --git a/mods/artifact_player/textures/artifact_rmb_100.png b/mods/artifact_player/textures/artifact_rmb_100.png new file mode 100644 index 0000000..af7d003 Binary files /dev/null and b/mods/artifact_player/textures/artifact_rmb_100.png differ diff --git a/mods/artifact_player/textures/artifact_rmb_25.png b/mods/artifact_player/textures/artifact_rmb_25.png new file mode 100644 index 0000000..19578a7 Binary files /dev/null and b/mods/artifact_player/textures/artifact_rmb_25.png differ diff --git a/mods/artifact_player/textures/artifact_rmb_50.png b/mods/artifact_player/textures/artifact_rmb_50.png new file mode 100644 index 0000000..6acd500 Binary files /dev/null and b/mods/artifact_player/textures/artifact_rmb_50.png differ diff --git a/mods/artifact_player/textures/artifact_rmb_75.png b/mods/artifact_player/textures/artifact_rmb_75.png new file mode 100644 index 0000000..565e1a6 Binary files /dev/null and b/mods/artifact_player/textures/artifact_rmb_75.png differ diff --git a/mods/artifact_story/init.lua b/mods/artifact_story/init.lua new file mode 100644 index 0000000..6cd257e --- /dev/null +++ b/mods/artifact_story/init.lua @@ -0,0 +1,32 @@ +artifact.story = { + states = enum { -- We use an enum for this so that we can use relational operators to determine if the current state is before or after a target state. + "loading", -- For mapgen + "init", -- For the opening cutscene + "pre_vix", -- The player doesn't have Vix yet + "main", -- The main game state. Progress is managed by checkpoints here. + "end", -- The game is over. + } +} +local ns = artifact.story +local db = minetest.get_mod_storage() + +local state = db:get_int("state") -- Defaults to zero, i.e. "loading". + +function ns.set_state(to) + state = to + db:set_int("state", state) +end + +function ns.get_state() + return state +end + +function ns.before_state(target) + +end + +minetest.register_globalstep(function() + if state == "init" then + + end +end) diff --git a/mods/artifact_story/mod.conf b/mods/artifact_story/mod.conf new file mode 100644 index 0000000..a7e57be --- /dev/null +++ b/mods/artifact_story/mod.conf @@ -0,0 +1,2 @@ +name = artifact_story +depends = artifact_base \ No newline at end of file diff --git a/mods/artifact_world/init.lua b/mods/artifact_world/init.lua new file mode 100644 index 0000000..ad09006 --- /dev/null +++ b/mods/artifact_world/init.lua @@ -0,0 +1,156 @@ + +artifact.registered_nodes = {} + +function artifact.register_node(name, def) + artifact.registered_nodes[name] = def + def._name = name + if not name:find ":" then + name = "artifact:"..name + end + if artifact.debug then + if not def.groups then def.groups = {} end + def.groups.dig_immediate = 3 + end + minetest.register_node(":"..name, def) + if name ~= def._name then + minetest.register_alias(def._name, name) + end +end + +function artifact.register_craftitem(name, def) + def._name = name + if not name:find ":" then + name = "artifact:"..name + end + minetest.register_craftitem(":"..name, def) + if name ~= def._name then + minetest.register_alias(def._name, name) + end +end + +local function rep(tx, size) + local out = "[combine:"..(size *16).."x"..(size *16) + for x = 0, size -1 do + for y = 0, size -1 do + out = out..":"..(x *16)..","..(y *16).."="..tx + end + end + return out +end + +artifact.register_node("stone", { + tiles = {"artifact_stone.png"} +}) + +artifact.register_node("stone_bricks", { + tiles = {"artifact_stone_bricks.png"} +}) + +artifact.register_node("stone_bricks_small", { + tiles = {"artifact_stone_bricks_small.png"} +}) + +artifact.register_node("stone_tile", { + tiles = {"artifact_stone_tile.png"} +}) + +artifact.register_node("stone_tile_small", { + tiles = {"artifact_stone_tile_small.png"} +}) + + +artifact.register_node("vines", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -0.5, -0.5, 0.48, + 0.5, 0.5, 0.48 + } + }, + walkable = false, + selection_box = { + type = "fixed", + fixed = { + -0.5, -0.5, 0.5, + 0.5, 0.5, 0.45 + } + }, + paramtype = "light", + paramtype2 = "facedir", + tiles = {"artifact_vines.png"}, + use_texture_alpha = true +}) + +artifact.register_node("leaves", { + drawtype = "allfaces", +-- paramtype = "light", + tiles = {"artifact_leaves.png"}, + use_texture_alpha = true +}) + + +artifact.register_node("wood_planks", { + tiles = {"artifact_wood_planks.png"} +}) + +artifact.register_node("ladder_wood", { + drawtype = "mesh", + mesh = "artifact_ladder.obj", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"artifact_ladder_wood.png"}, + walkable = false, + climbable = true +}) + + + +artifact.register_node("lamp_gold", { + drawtype = "mesh", + mesh = "artifact_lamp.obj", + tiles = {"artifact_lamp_gold.png"}, + light_source = 8, + paramtype = "light", + sunlight_propagates = true +}) + +artifact.register_node("lamp_red", { + drawtype = "mesh", + mesh = "artifact_lamp.obj", + tiles = {"artifact_lamp_red.png"}, + light_source = 6, + paramtype = "light", + sunlight_propagates = true +}) + +artifact.register_node("lamp_blue", { + drawtype = "mesh", + mesh = "artifact_lamp.obj", + tiles = {"artifact_lamp_blue.png"}, + light_source = 10, + paramtype = "light", + sunlight_propagates = true +}) + + + +artifact.register_node("light", { + tiles = {"artifact_light.png"}, + paramtype = "light", + light_source = 14 +}) + +minetest.override_item("air", { + sunlight_propagates = false, + light_source = 2 +}) + +minetest.register_mapgen_script(minetest.get_modpath(minetest.get_current_modname()).."/mapgen.lua") + +minetest.register_decoration { + deco_type = "simple", + decoration = "lamp_gold", + place_on = "stone", + fill_ratio = 0.02, +} diff --git a/mods/artifact_world/mapgen.lua b/mods/artifact_world/mapgen.lua new file mode 100644 index 0000000..5b0e266 --- /dev/null +++ b/mods/artifact_world/mapgen.lua @@ -0,0 +1,21 @@ + +local vm_data = {} + +local c_stone = minetest.get_content_id("artifact:stone") + +minetest.register_on_generated(function(vm, minp, maxp) + local min, max = vm:get_emerged_area() + local va = VoxelArea(min, max) + + vm:get_data(vm_data) + + if max.y < 0 then + for i in va:iterp(minp, maxp) do + vm_data[i] = c_stone + end + end + + vm:set_data(vm_data) + minetest.generate_decorations(vm) + vm:calc_lighting() +end) diff --git a/mods/artifact_world/mod.conf b/mods/artifact_world/mod.conf new file mode 100644 index 0000000..095afbb --- /dev/null +++ b/mods/artifact_world/mod.conf @@ -0,0 +1,2 @@ +name = artifact_world +depends = artifact_base \ No newline at end of file diff --git a/mods/artifact_world/models/artifact_ladder.obj b/mods/artifact_world/models/artifact_ladder.obj new file mode 100644 index 0000000..a5dfcbc --- /dev/null +++ b/mods/artifact_world/models/artifact_ladder.obj @@ -0,0 +1,279 @@ +# Made in Blockbench 4.12.5 +mtllib artifact_ladder.mtl + +o cube +v -0.375 0.5 0.5 +v -0.375 0.5 0.375 +v -0.375 -0.5 0.5 +v -0.375 -0.5 0.375 +v -0.5 0.5 0.375 +v -0.5 0.5 0.5 +v -0.5 -0.5 0.375 +v -0.5 -0.5 0.5 +vt 0 1 +vt 0.0625 1 +vt 0.0625 0.5 +vt 0 0.5 +vt 0.0625 1 +vt 0.125 1 +vt 0.125 0.5 +vt 0.0625 0.5 +vt 0.125 1 +vt 0.1875 1 +vt 0.1875 0.5 +vt 0.125 0.5 +vt 0.1875 1 +vt 0.25 1 +vt 0.25 0.5 +vt 0.1875 0.5 +vt 0.0625 0.3125 +vt 0 0.3125 +vt 0 0.375 +vt 0.0625 0.375 +vt 0.125 0.375 +vt 0.0625 0.375 +vt 0.0625 0.3125 +vt 0.125 0.3125 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 4/4/1 7/3/1 5/2/1 2/1/1 +f 3/8/2 4/7/2 2/6/2 1/5/2 +f 8/12/3 3/11/3 1/10/3 6/9/3 +f 7/16/4 8/15/4 6/14/4 5/13/4 +f 6/20/5 1/19/5 2/18/5 5/17/5 +f 7/24/6 4/23/6 3/22/6 8/21/6 +o cube +v 0.5 0.5 0.5 +v 0.5 0.5 0.375 +v 0.5 -0.5 0.5 +v 0.5 -0.5 0.375 +v 0.375 0.5 0.375 +v 0.375 0.5 0.5 +v 0.375 -0.5 0.375 +v 0.375 -0.5 0.5 +vt 0.25 1 +vt 0.3125 1 +vt 0.3125 0.5 +vt 0.25 0.5 +vt 0.3125 1 +vt 0.375 1 +vt 0.375 0.5 +vt 0.3125 0.5 +vt 0.375 1 +vt 0.4375 1 +vt 0.4375 0.5 +vt 0.375 0.5 +vt 0.4375 1 +vt 0.5 1 +vt 0.5 0.5 +vt 0.4375 0.5 +vt 0.1875 0.3125 +vt 0.125 0.3125 +vt 0.125 0.375 +vt 0.1875 0.375 +vt 0.25 0.375 +vt 0.1875 0.375 +vt 0.1875 0.3125 +vt 0.25 0.3125 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 12/28/7 15/27/7 13/26/7 10/25/7 +f 11/32/8 12/31/8 10/30/8 9/29/8 +f 16/36/9 11/35/9 9/34/9 14/33/9 +f 15/40/10 16/39/10 14/38/10 13/37/10 +f 14/44/11 9/43/11 10/42/11 13/41/11 +f 15/48/12 12/47/12 11/46/12 16/45/12 +o cube +v 0.375 -0.3125 0.5 +v 0.375 -0.3125 0.4375 +v 0.375 -0.4375 0.5 +v 0.375 -0.4375 0.4375 +v -0.375 -0.3125 0.4375 +v -0.375 -0.3125 0.5 +v -0.375 -0.4375 0.4375 +v -0.375 -0.4375 0.5 +vt 0 0.5 +vt 0.375 0.5 +vt 0.375 0.4375 +vt 0 0.4375 +vt 0.25 0.375 +vt 0.28125 0.375 +vt 0.28125 0.3125 +vt 0.25 0.3125 +vt 0.5 1 +vt 0.875 1 +vt 0.875 0.9375 +vt 0.5 0.9375 +vt 0.28125 0.375 +vt 0.3125 0.375 +vt 0.3125 0.3125 +vt 0.28125 0.3125 +vt 0.875 0.59375 +vt 0.5 0.59375 +vt 0.5 0.625 +vt 0.875 0.625 +vt 0.875 0.59375 +vt 0.5 0.59375 +vt 0.5 0.5625 +vt 0.875 0.5625 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 20/52/13 23/51/13 21/50/13 18/49/13 +f 19/56/14 20/55/14 18/54/14 17/53/14 +f 24/60/15 19/59/15 17/58/15 22/57/15 +f 23/64/16 24/63/16 22/62/16 21/61/16 +f 22/68/17 17/67/17 18/66/17 21/65/17 +f 23/72/18 20/71/18 19/70/18 24/69/18 +o cube +v 0.375 -0.0625 0.5 +v 0.375 -0.0625 0.4375 +v 0.375 -0.1875 0.5 +v 0.375 -0.1875 0.4375 +v -0.375 -0.0625 0.4375 +v -0.375 -0.0625 0.5 +v -0.375 -0.1875 0.4375 +v -0.375 -0.1875 0.5 +vt 0.5 0.9375 +vt 0.875 0.9375 +vt 0.875 0.875 +vt 0.5 0.875 +vt 0.3125 0.375 +vt 0.34375 0.375 +vt 0.34375 0.3125 +vt 0.3125 0.3125 +vt 0.5 0.875 +vt 0.875 0.875 +vt 0.875 0.8125 +vt 0.5 0.8125 +vt 0.34375 0.375 +vt 0.375 0.375 +vt 0.375 0.3125 +vt 0.34375 0.3125 +vt 0.875 0.53125 +vt 0.5 0.53125 +vt 0.5 0.5625 +vt 0.875 0.5625 +vt 0.875 0.53125 +vt 0.5 0.53125 +vt 0.5 0.5 +vt 0.875 0.5 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 28/76/19 31/75/19 29/74/19 26/73/19 +f 27/80/20 28/79/20 26/78/20 25/77/20 +f 32/84/21 27/83/21 25/82/21 30/81/21 +f 31/88/22 32/87/22 30/86/22 29/85/22 +f 30/92/23 25/91/23 26/90/23 29/89/23 +f 31/96/24 28/95/24 27/94/24 32/93/24 +o cube +v 0.375 0.1875 0.5 +v 0.375 0.1875 0.4375 +v 0.375 0.0625 0.5 +v 0.375 0.0625 0.4375 +v -0.375 0.1875 0.4375 +v -0.375 0.1875 0.5 +v -0.375 0.0625 0.4375 +v -0.375 0.0625 0.5 +vt 0.5 0.8125 +vt 0.875 0.8125 +vt 0.875 0.75 +vt 0.5 0.75 +vt 0.375 0.375 +vt 0.40625 0.375 +vt 0.40625 0.3125 +vt 0.375 0.3125 +vt 0.5 0.75 +vt 0.875 0.75 +vt 0.875 0.6875 +vt 0.5 0.6875 +vt 0.40625 0.375 +vt 0.4375 0.375 +vt 0.4375 0.3125 +vt 0.40625 0.3125 +vt 0.375 0.40625 +vt 0 0.40625 +vt 0 0.4375 +vt 0.375 0.4375 +vt 0.75 0.4375 +vt 0.375 0.4375 +vt 0.375 0.40625 +vt 0.75 0.40625 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 36/100/25 39/99/25 37/98/25 34/97/25 +f 35/104/26 36/103/26 34/102/26 33/101/26 +f 40/108/27 35/107/27 33/106/27 38/105/27 +f 39/112/28 40/111/28 38/110/28 37/109/28 +f 38/116/29 33/115/29 34/114/29 37/113/29 +f 39/120/30 36/119/30 35/118/30 40/117/30 +o cube +v 0.375 0.4375 0.5 +v 0.375 0.4375 0.4375 +v 0.375 0.3125 0.5 +v 0.375 0.3125 0.4375 +v -0.375 0.4375 0.4375 +v -0.375 0.4375 0.5 +v -0.375 0.3125 0.4375 +v -0.375 0.3125 0.5 +vt 0.5 0.6875 +vt 0.875 0.6875 +vt 0.875 0.625 +vt 0.5 0.625 +vt 0.4375 0.375 +vt 0.46875 0.375 +vt 0.46875 0.3125 +vt 0.4375 0.3125 +vt 0.375 0.5 +vt 0.75 0.5 +vt 0.75 0.4375 +vt 0.375 0.4375 +vt 0.46875 0.375 +vt 0.5 0.375 +vt 0.5 0.3125 +vt 0.46875 0.3125 +vt 0.375 0.375 +vt 0 0.375 +vt 0 0.40625 +vt 0.375 0.40625 +vt 0.75 0.40625 +vt 0.375 0.40625 +vt 0.375 0.375 +vt 0.75 0.375 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_310b69c6-0a1e-9e32-b7a6-66ecfa2bc972 +f 44/124/31 47/123/31 45/122/31 42/121/31 +f 43/128/32 44/127/32 42/126/32 41/125/32 +f 48/132/33 43/131/33 41/130/33 46/129/33 +f 47/136/34 48/135/34 46/134/34 45/133/34 +f 46/140/35 41/139/35 42/138/35 45/137/35 +f 47/144/36 44/143/36 43/142/36 48/141/36 \ No newline at end of file diff --git a/mods/artifact_world/models/artifact_lamp.obj b/mods/artifact_world/models/artifact_lamp.obj new file mode 100644 index 0000000..07b7b0f --- /dev/null +++ b/mods/artifact_world/models/artifact_lamp.obj @@ -0,0 +1,95 @@ +# Made in Blockbench 4.12.5 +mtllib model.mtl + +o cube +v 0.125 0.25 0.125 +v 0.125 0.25 -0.125 +v 0.125 0 0.125 +v 0.125 0 -0.125 +v -0.125 0.25 -0.125 +v -0.125 0.25 0.125 +v -0.125 0 -0.125 +v -0.125 0 0.125 +vt 0 1 +vt 0.25 1 +vt 0.25 0.75 +vt 0 0.75 +vt 0 0.75 +vt 0.25 0.75 +vt 0.25 0.5 +vt 0 0.5 +vt 0.25 1 +vt 0.5 1 +vt 0.5 0.75 +vt 0.25 0.75 +vt 0.25 0.75 +vt 0.5 0.75 +vt 0.5 0.5 +vt 0.25 0.5 +vt 0.25 0.25 +vt 0 0.25 +vt 0 0.5 +vt 0.25 0.5 +vt 0.75 1 +vt 0.5 1 +vt 0.5 0.75 +vt 0.75 0.75 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_949d48e1-8451-d0f6-823c-d3fa01af52b1 +f 4/4/1 7/3/1 5/2/1 2/1/1 +f 3/8/2 4/7/2 2/6/2 1/5/2 +f 8/12/3 3/11/3 1/10/3 6/9/3 +f 7/16/4 8/15/4 6/14/4 5/13/4 +f 6/20/5 1/19/5 2/18/5 5/17/5 +f 7/24/6 4/23/6 3/22/6 8/21/6 +o cube +v 0.0625 0 0.0625 +v 0.0625 0 -0.0625 +v 0.0625 -0.5 0.0625 +v 0.0625 -0.5 -0.0625 +v -0.0625 0 -0.0625 +v -0.0625 0 0.0625 +v -0.0625 -0.5 -0.0625 +v -0.0625 -0.5 0.0625 +vt 0.25 0.5 +vt 0.375 0.5 +vt 0.375 0 +vt 0.25 0 +vt 0.5 0.75 +vt 0.625 0.75 +vt 0.625 0.25 +vt 0.5 0.25 +vt 0.375 0.5 +vt 0.5 0.5 +vt 0.5 0 +vt 0.375 0 +vt 0.625 0.75 +vt 0.75 0.75 +vt 0.75 0.25 +vt 0.625 0.25 +vt 0.125 0.125 +vt 0 0.125 +vt 0 0.25 +vt 0.125 0.25 +vt 0.875 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0.875 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl m_949d48e1-8451-d0f6-823c-d3fa01af52b1 +f 12/28/7 15/27/7 13/26/7 10/25/7 +f 11/32/8 12/31/8 10/30/8 9/29/8 +f 16/36/9 11/35/9 9/34/9 14/33/9 +f 15/40/10 16/39/10 14/38/10 13/37/10 +f 14/44/11 9/43/11 10/42/11 13/41/11 +f 15/48/12 12/47/12 11/46/12 16/45/12 \ No newline at end of file diff --git a/mods/artifact_world/textures/artifact_ladder_wood.png b/mods/artifact_world/textures/artifact_ladder_wood.png new file mode 100644 index 0000000..2417f61 Binary files /dev/null and b/mods/artifact_world/textures/artifact_ladder_wood.png differ diff --git a/mods/artifact_world/textures/artifact_lamp_blue.png b/mods/artifact_world/textures/artifact_lamp_blue.png new file mode 100644 index 0000000..48a20c8 Binary files /dev/null and b/mods/artifact_world/textures/artifact_lamp_blue.png differ diff --git a/mods/artifact_world/textures/artifact_lamp_gold.png b/mods/artifact_world/textures/artifact_lamp_gold.png new file mode 100644 index 0000000..0fdf060 Binary files /dev/null and b/mods/artifact_world/textures/artifact_lamp_gold.png differ diff --git a/mods/artifact_world/textures/artifact_lamp_red.png b/mods/artifact_world/textures/artifact_lamp_red.png new file mode 100644 index 0000000..15d1adf Binary files /dev/null and b/mods/artifact_world/textures/artifact_lamp_red.png differ diff --git a/mods/artifact_world/textures/artifact_leaves.png b/mods/artifact_world/textures/artifact_leaves.png new file mode 100644 index 0000000..33862bd Binary files /dev/null and b/mods/artifact_world/textures/artifact_leaves.png differ diff --git a/mods/artifact_world/textures/artifact_light.png b/mods/artifact_world/textures/artifact_light.png new file mode 100644 index 0000000..5ee4ee7 Binary files /dev/null and b/mods/artifact_world/textures/artifact_light.png differ diff --git a/mods/artifact_world/textures/artifact_stone.png b/mods/artifact_world/textures/artifact_stone.png new file mode 100644 index 0000000..202a560 Binary files /dev/null and b/mods/artifact_world/textures/artifact_stone.png differ diff --git a/mods/artifact_world/textures/artifact_stone_bricks.png b/mods/artifact_world/textures/artifact_stone_bricks.png new file mode 100644 index 0000000..7afc7f1 Binary files /dev/null and b/mods/artifact_world/textures/artifact_stone_bricks.png differ diff --git a/mods/artifact_world/textures/artifact_stone_bricks_small.png b/mods/artifact_world/textures/artifact_stone_bricks_small.png new file mode 100644 index 0000000..8746d0f Binary files /dev/null and b/mods/artifact_world/textures/artifact_stone_bricks_small.png differ diff --git a/mods/artifact_world/textures/artifact_stone_tile.png b/mods/artifact_world/textures/artifact_stone_tile.png new file mode 100644 index 0000000..4c1febf Binary files /dev/null and b/mods/artifact_world/textures/artifact_stone_tile.png differ diff --git a/mods/artifact_world/textures/artifact_stone_tile_small.png b/mods/artifact_world/textures/artifact_stone_tile_small.png new file mode 100644 index 0000000..7901d6a Binary files /dev/null and b/mods/artifact_world/textures/artifact_stone_tile_small.png differ diff --git a/mods/artifact_world/textures/artifact_vines.png b/mods/artifact_world/textures/artifact_vines.png new file mode 100644 index 0000000..e59af16 Binary files /dev/null and b/mods/artifact_world/textures/artifact_vines.png differ diff --git a/mods/artifact_world/textures/artifact_wood_planks.png b/mods/artifact_world/textures/artifact_wood_planks.png new file mode 100644 index 0000000..d4884ee Binary files /dev/null and b/mods/artifact_world/textures/artifact_wood_planks.png differ diff --git a/mods/artifact_world/textures/sunrisebg.png b/mods/artifact_world/textures/sunrisebg.png new file mode 100644 index 0000000..5e4988e Binary files /dev/null and b/mods/artifact_world/textures/sunrisebg.png differ