Well, if reminder text isn't in Magic English, then it's in colloquial English. So, if we have a corpus of colloquial English, and a relation between cards and their reminder text, we can ask it to fill in the colloquial English that would fit a given card. This is obviously something that would require manual cleanup afterwards, but from a perspective of trying to supervise stuff (which is the approach I'm taking... in my head), these are two different types of data.
As to where to get a corpus... I dunno, can we get a dump of these forums to work with?
So I've only gotten to page 35, but I have some questions.
starting from scratch how many vanilla and french vanilla creatures did you generate to (pre-train was it) the NN @Talcos ? how many times did you train it on that sample set?
can french vanilla creatures that are duel colored be easily generated to help the NN understand that we are looking for more non-monos?
EDIT: also for the french vanilla creatures I think if we could make it a little more informative, so have defenders be tougher than powerful and striker be more powerful than tough, just a thought.
@hardcast_sixdrop can you encode the "AllSets.json" so the NN can see how frequent different types of things appear? like how often mana dorks are reprinted.
and what cards, can we have an exact summery, did you cut from the list (the Un-sets and so on)
I have so many thoughts all jumbling around at once, I started reading from page 1 yesterday. It has been so much to take in at once.
Have we, you guys really, com to a consensuses as to how the card data should be organized for the NN to process?
Well, if reminder text isn't in Magic English, then it's in colloquial English. So, if we have a corpus of colloquial English, and a relation between cards and their reminder text, we can ask it to fill in the colloquial English that would fit a given card. This is obviously something that would require manual cleanup afterwards, but from a perspective of trying to supervise stuff (which is the approach I'm taking... in my head), these are two different types of data.
As to where to get a corpus... I dunno, can we get a dump of these forums to work with?
I'm all for encouraging experimentation, but I'll warn you that the juncture between Magic English and real English is incredibly small. There isn't a lot of reminder text to go on, and much of it is repeated across many cards.
But the idea itself has merit, this concept of bridging the gap between a formal language and an informal one. I like it, and there are ways one might go about it.
For example, neural translation is now a thing. We have two languages, and the network learns to go from one language to an learned representation of the meaning of the words and then finally to another language. It would be interesting to see whether you could decipher legalese in this way, for example.
starting from scratch how many vanilla and french vanilla creatures did you generate to (pre-train was it) the NN @Talcos ? how many times did you train it on that sample set?
can french vanilla creatures that are duel colored be easily generated to help the NN understand that we are looking for more non-monos?
Salut, reimannsum! Welcome. Sorry I did not reply to you sooner, but I got caught up in some work that lasted all through the evening.
When I did that (and for the most recent networks I'm not using scripted generation to expand the input corpus), I generated a few thousand such creatures and trained once. I was more or less padding the input with additional cards.
To preface an answer to your second question, what I've found is that the network makes some mistakes with the distributions of cards by color.
From one version of the network that I've sampled and studied deeply, I found that, relative to real card distributions, the networks generate too many monocolored cards and too few multicolored cards. It seems that the prediction policies learned by the networks favor monocolored cards (as in, when you ask it to consider a UW card, its predictions take into account its identity as a white card and as a blue card but not as a "white and blue" card). And even the color associations are tenuous at best. That's something we still have room to improve upon.
So more multicolored cards might force the network to seriously consider what makes Offering to Asha both white and blue. At the same time, it's also very difficult to hand-code a card generation process that will be adequate for the task. Honestly, if I had the time and resources and wanted to get more data, I'd scrape the single card creation thread here on this subforum. There's plenty of data to be had there (there are more cards there than there are actual cards in Magic), and there's a disproportionate number of multicolored cards.
Have we, you guys really, com to a consensuses as to how the card data should be organized for the NN to process?
There's some wiggle room for modifications, but the standard encoding we use now is the one produced by this tool of ours.
----
Well, we had a network failure yesterday and now when I log back on to the big machine, I can't see the Nvidia toolkit, and without that I can't restart the virtual machine where I ran the data-structure augmented networks. Everything is backed up, don't worry, but I'll have to get everything back online before I can finish that task. That and I have a deadline coming up on Friday, so it might be just a bit. But I promise to make everything available soon, lol.
By the way, I recently saw a paper on using clique topology to reveal the structure of (biological) neural networks entitled "Clique topology reveals intrinsic geometric structure in neural correlations". It gives me some ideas for doing visualizations of their artificial counterparts, and I'll have to look more into that later.
Thanks! I know people have wondered of randomizing the mana cost might help the network understand multicolor better, have we had any results from experiments on that?
also HELP!! I left my RNN to run and IT CRASHED!
EDIT: when either attempting to make a checkpoint or resuming training after making a checkpoint (not sure which) my script crashed. I'll see if it happens again as soon as I get to that point again.
Has anyone had this happen and have any advice? I tried to make a new network to run just instants and sorceries through it (as I can't handle more than 2 layers on this spare machine) and I got the same thing; at least it looks the sameish, I lost the original log for the crash but this is what happened when trying to build the new NN. Can anyone help me?
EDIT2: So I figured out my crash: if you follow the tutorial eexactly you save your checkpoints to ~/mtg-rnn/cv/whatever_you_want . But you have to make that directory first, well either that or the tutorial has the train command with a checkpoint directory as ~/this_place_where_ever_it_is/ instead of ~/this_place_where_ever_it_is . Either I didn't have the directory made, or the slash at the end of the command makes a difference.
sorry for the double post.
here is a 10k dump list of my grepped instant and sorcery training set:
randomized mana sypmble placement
first checkpoint at epoch 12.5
_NONAME_ _NOCOST_ ([mcreating an lstm...[0m ) _INVALID_
_NOTYPE_
~~~~~~~~
([mmissing seed text, using uniform probability over first character[0m )
~~~~~~~~
([m--------------------------[0m )
~~~~~~~~ Le From Your Graveyard On Top Of Your Library.
Foreshaure2U (Common)
Instant
Destroy target creature or enchantment for shise cards and put the rest into your graveyard. If it's a permane instead.
Exile Foreshaure.
Retrifion5R (Uncommon)
Sorcery
Target player discards a card.
Draw two cards.
Sormen'S Will2U (Common)
Instant
Draw two cards, then discard a card.
Spere Of The Nidmence2B (Common)
Instant
Target creature gets -2/-3 until end of turn for each onto the battlefield under your control.
Boomby Deal3U (Uncommon)
Instant
Target player reveals his or her hand. You choose a card revealed this way.
#yay choosing cards
Ray Of Sand1B (Common)
Sorcery
Target player discards two cards.
Purrify The Fare2U (Uncommon)
Instant
Creatures your opponents control get -1/-1 until end of turn. = Target player gains 83.
# seems a little strong for whatever it does
Arrow Spire3RR (Uncommon) _INVALID_
Sorcery
Arrow Spire deals 26 daard rather than pay Arrow Spire's mana cost.
Arrow Spire deals 90UUUUUU}
# it seems more ok with colored mana in the cost
Lavige Strike3R (Common)
Instant
Lavige Strike deals 23 damage to target creature or player. Then that player discards two cards.
# stronk card is stronk
Death Infark4B (Common)
Instant
Destroy target non~tep of flash with the same name as that creature on the battlefield.
Anishire1W (Uncommon)
Instant
Search your library for a card, then shuffle your library.
Storm
# that's weak, who wants that?
Death Streke1G (Common)
Sorcery
Put target creature you control. You control target player discards a card.
Draw a card.
Constic Strike1G (Common)
Sorcery
Put a 3/4 red greit creature token onto the battlefield.
# not green enough, make more powerful
Seed To DistranceU (Common)
Instant
[1 = Tap all or two target creature. That creature gains shawnd and put it into your hand, then shuffle your library.
Draw a card.
#finally a useless shuffle
Devore6W (Rare)
Instant
If the control of target permanent you control. Domain ~ target creature gets -4/-15 until end of turn.
Mirdicars Arritation2G (Uncommon)
Instant
Target creature gets -X/-X until end of turn, where X is the number of creature that player controls.
# wow a real X card on the first go!
Mind Screat2B (Common)
Sorcery
As an additional cost to cast Mind Screat, sacrifice a creature.
Return target creature card from your graveyard on top of your library.
Ferasion PropozeBB (Common)
Sorcery
As an additional cost to cast Ferasion Propoze, sacrifice a creature.
Attacking creatures you control get +1/+1 until end of turn.
Draw a card.
Respelate2BB (Uncommon)
Sorcery
Destroy target artifact or enchantment. You gain life equal to the number of cards in that player exilested mountains onto the battlefield tapped, then sacrifices a creature.
ReaconisU (Common)
Instant
Target creature gets -1/-1 until end of turn. If Reaconis was kicked, that creature gains first strike until end of turn, then discard two cards in your graveyard, you may play target creature gets -2/-2 until end of turn.
Spiring Demorions1BB (Common)
Sorcery
Return target creature card from your graveyard to your hand. = Put an X/X green ooze creature token onto the battlefield. Then that player draws three cards, then discard two cards unless its controller pays 2.
# I knew I couldn't be lucky enough no have X understood on the first go.
Defonation3R (Common) _INVALID_
Instant
Defonation deals 90UUUU}
# that sounds good? unless that drains mana
Last The Eadd3G (Uncommon)
Sorcery
You gain 80 or green from your hand rather than pay Last The Eadd's mana cost.
Untap all lands you control.
# sounds good to me
Tranfer'S Fure5WW (Rare)
Sorcery
You gain 6 life.
Mordoration Frome2R (Common)
Instant
Mordoration Frome deals 15 damage to target creature or player.
Spolice 7BBB
# wonder what 'sploice is? I think this card may be under costed
Burten To Dreath2R (Common)
Instant
Burten To Dreath deals 15 damage to target creature or player.
# tim burton someone to death?
Flame FfortingU (Uncommon)
Instant
Uncast target spell that targets you.
Return target creature card from your graveyard to your hand.
# not over powered aat all right?
Bond Of Bearberal2U (Common)
Instant
Artifact creatures you control get +2/+4 until end of turn.
# well that is unexpected
Sconding Spiration4R (Uncommon)
Sorcery
If an opponent controls a sormage, you may pay 60~18WUUU
SurfirW (Common)
Instant
Until end of turn, target creature gets -X/-X until end of turn, then each player discards two cards.
Sheer Of Hordest2U (Common)
Instant
Target creature gets +X/+3 until end of turn, one of them onto the battlefield tapped and gain control of those creatures and exile them. Then that player shuffles his or her library.
Resure The Greed5RRRR (Rare)
Sorcery
# very powerful!
Sleeg The Sours1BG (Rare)
Sorcery
All lands you control to their owners' hands. You lose 6 life.
Spell To The Vight4U (Uncommon)
Sorcery
Return target creature card from your graveyard on top of your library.
Death Spown2R (Uncommon)
Sorcery
Death Spown deals 75 draws four cards.
# red is on a killing spree! where do these big numbers come from?
Death Retraot1R (Common)
Instant
Target creature gets -3/-4 until end of turn.
Down Of The From Growth4R (Common)
Sorcery
Down Of The From Growth deals 30 dimage that would be dealt to you this turn by artifacts on the battlefield. Exile Down Of The From Growth.
Douring Sualt5R (Uncommon) _INVALID_
Sorcery
Destroy target creature with power 71UUUUUU}
Shame Spire3R (Common)
Instant
Destroy target artifact or enchantment. = Destroy target artifact. = Exile target creature istor her with forest converted mana cost.
Spolitic Spist2W (Uncommon)
Sorcery
Destroy all nondouins creatures, then puts the top that card's revealed this way, you may play those cards. Uncast target spell.
Retrict Of The More3BB (Uncommon)
Sorcery
Each player returns a card of the creature that player controls. They can't be regenerated. Draw a card.
FearicalizeU (Common)
Instant
Uncast target spell with a single target.
Conerge2B (Common)
Instant
Target player reveals his or her hand and target creature you control gets +2/+3 until end of turn.
Sprincal Fracture2U (Uncommon)
Instant
Uncast target spell with converted mana cost X.
Frestic Reneraction2B (Common)
Sorcery
Destroy target insacrifice any number of cards that player puts them on top of it.
Consune VenationR (Common)
Sorcery
Consune Venation deals 3 damage to target creature or player. You gain 120.
Drash Timents2B (Common)
Sorcery
As an additional cost to cast Drash Timents, sacrifice a creature.
Destroy target land.]
Scerge Of Withor4BB (Common)
Sorcery
As an additional cost to cast Scerge Of Withor, put two +2/21 or less from your graveyard on top of your library.
Third Of Ambarity3U (Uncommon)
Sorcery
Put target enchantment. = Destroy target artifact or enchantment.
Dream Of Returnes5RR (Uncommon)
Sorcery
Choose any number of target creatures you control.
Fearca ~ 1B
Destroy target artifact. It controller and 1 to your mana pool.
Flashback 4R
Savasis Spection9RR (Rare)
Sorcery
Destroy two target creatures. They game flying of it the black and gain peach other player discards those cards. Exile Savasis Spection.
Faitered Andspait3B (Common)
Sorcery
Target opponent gains 7 life.
Sidence Force2G (Common)
Sorcery
You gain 2 life.
Cipher
Faterootd1U (Common)
Instant
Uncast target spell and you gain 9 life.
Flesher Fare0 _UNPARSED_ _INVALID_
Instant _NOTYPE_ ~ A ({^^WW^^})
Deeperation2R (Uncommon) _INVALID_
Instant
Destroy target artifact. Prevent all damage that would be dealt to target creature or player.
Awaken 35UUUU^^^UU}
Conventing With1B (Common)
Instant
Target creature gets -1/-1 until end of turn. That player discards two cards.
Return To The Fatalening9B (Rare)
Sorcery
Target player puts two +1/+1 counters on it.
Loor Of The Real1B (Common)
Sorcery
Target player draws two cards and you lose X life, remove a % counter from your graveyard on top of your library.
Draw a card.
Treadial Charm3U (Uncommon)
Sorcery
Destroy target creature. It can't be regenerated.
Tren
Flowdif Peroush1R (Uncommon)
Sorcery
Target creature gets -4/-11 until end of turn.
Rozing Sarvesion4R (Uncommon)
Sorcery
If a creature dealt damage this way be or spels or abilities.
Reacing Sunge2R (Common)
Sorcery
Put target land on top of its owner's library.
Death Of The Forder1BB (Common)
Instant
Target player draws two cards, then discard two cards.
Consumering SindsU (Uncommon)
Instant
Target creature gets -3/-6 until end of turn. It gains haste until end of turn. = Put a +1/+1 counter on that creature.
Peace Of String1R (Uncommon)
Instant
Target creature gets +2/+3 until end of turn.
Storm To Voud4BB (Uncommon)
Sorcery
Destroy target creature. Then that player discards a card.
Draw two cards.
Spole In Realty3B (Uncommon)
Sorcery
Target player reveals his or her hand.
Tour Spift1B (Uncommon)
Instant
Until end of turn, target creature gains first strike until end of turn. You gain life equal to the number of colors that creature gets -4/-15 until end of turn. If you control a creature onto the battlefield. That creature gets -3/-
~~~~~~~~
Last The Eadd 3G (Uncommon)
Sorcery
You gain 80 or green from your hand rather than pay Last The Eadd's mana cost.
Untap all lands you control.
# sounds good to me
Ok so dusting off my alienware laptop for more power I got this error during ./install.sh
Found CUDA on your machine. Installing CUDA packages
Warning: unmatched variable LUALIB
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/cutorch/scm-1" && make -j$(getconf _NPROCESSORS_ONLN) install
-- Found Torch7 in ~/torch/install
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "~/torch/extra/cutorch/build/CMakeFiles/CMakeOutput.log".
Error: Build error: Failed building.
I try to continue with the tutorial and I get"
$ sudo luarocks install nngraph
sudo: luarocks: command not found
can anyone Help with this? the log file isn't helpful
Updating manifest for ~/torch/install/lib/luarocks/rocks
cwrap scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/paths/build
[100%] Built target paths
[100%] Built target paths
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/paths/scm-1/lua/paths/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/paths/scm-1/lib/libpaths.so
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUALIB= -DLUA_INCDIR="~/torch/install/include" -DLUA_LIBDIR="~/torch/install/lib" -DLUADIR="~/torch/install/lib/luarocks/rocks/paths/scm-1/lua" -DLIBDIR="~/torch/install/lib/luarocks/rocks/paths/scm-1/lib" -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/paths/scm-1" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
paths scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Compiling with OpenMP support
-- Compiling with OpenMP support
-- Could not find hardware support for NEON on this machine.
-- No OMAP3 processor on this on this machine.
-- No OMAP4 processor on this on this machine.
-- Atomics: using GCC intrinsics
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_sequential - mkl_core - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_sequential - mkl_core - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_sequential - mkl_core - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_sequential - mkl_core - m]
-- Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl - guide - pthread - m]
-- Library mkl: not found
-- MKL library not found
-- Checking for [openblas]
-- Library openblas: /opt/OpenBLAS/lib/libopenblas.so
-- Found a library with BLAS API (open).
-- Found a library with LAPACK API. (open)
-- C inline is supported (inline)
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/torch/build
[ 23%] Built target TH
[ 25%] Built target luaT
Linking C shared module libtorch.so
[ 50%] Built target torch
[ 75%] Built target torch_static
[ 98%] Built target TH_static
[100%] Built target luaT_static
[ 23%] Built target TH
[ 25%] Built target luaT
[ 50%] Built target torch
[ 75%] Built target torch_static
[ 98%] Built target TH_static
[100%] Built target luaT_static
Install the project...
-- Install configuration: "Release"
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchExports.cmake
-- Installing: ~/torch/install/share/cmake/torch/TorchExports-release.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchConfig.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchWrap.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchPathsInit.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchPackage.cmake
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lib/libtorch.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/torch/scm-1/lib/libtorch.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/File.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/Tensor.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/CmdLine.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/FFI.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/Tester.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/test.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/README.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/index.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/gather.png
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/maths.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/tensor.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/tester.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/serialization.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/random.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/file.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/timer.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/utility.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/storage.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/diskfile.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/memoryfile.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/cmdline.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/pipefile.md
-- Up-to-date: ~/torch/install/lib/libTH.so
-- Up-to-date: ~/torch/install/include/TH/TH.h
-- Up-to-date: ~/torch/install/include/TH/THAllocator.h
-- Up-to-date: ~/torch/install/include/TH/THBlas.h
-- Up-to-date: ~/torch/install/include/TH/THDiskFile.h
-- Up-to-date: ~/torch/install/include/TH/THFile.h
-- Up-to-date: ~/torch/install/include/TH/THFilePrivate.h
-- Up-to-date: ~/torch/install/include/TH/THGeneral.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateAllTypes.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateFloatTypes.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateIntTypes.h
-- Up-to-date: ~/torch/install/include/TH/THLapack.h
-- Up-to-date: ~/torch/install/include/TH/THLogAdd.h
-- Up-to-date: ~/torch/install/include/TH/THMemoryFile.h
-- Up-to-date: ~/torch/install/include/TH/THRandom.h
-- Up-to-date: ~/torch/install/include/TH/THStorage.h
-- Up-to-date: ~/torch/install/include/TH/THTensor.h
-- Up-to-date: ~/torch/install/include/TH/THTensorApply.h
-- Up-to-date: ~/torch/install/include/TH/THTensorDimApply.h
-- Up-to-date: ~/torch/install/include/TH/THTensorMacros.h
-- Up-to-date: ~/torch/install/include/TH/THVector.h
-- Up-to-date: ~/torch/install/include/TH/THAtomic.h
-- Up-to-date: ~/torch/install/include/TH/generic/THBlas.c
-- Up-to-date: ~/torch/install/include/TH/generic/THBlas.h
-- Up-to-date: ~/torch/install/include/TH/generic/THLapack.c
-- Up-to-date: ~/torch/install/include/TH/generic/THLapack.h
-- Up-to-date: ~/torch/install/include/TH/generic/THStorage.c
-- Up-to-date: ~/torch/install/include/TH/generic/THStorage.h
-- Up-to-date: ~/torch/install/include/TH/generic/THStorageCopy.c
-- Up-to-date: ~/torch/install/include/TH/generic/THStorageCopy.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensor.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensor.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorConv.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorConv.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorCopy.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorCopy.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorLapack.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorLapack.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorMath.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorMath.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorRandom.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorRandom.h
-- Up-to-date: ~/torch/install/include/TH/generic/THVector.c
-- Up-to-date: ~/torch/install/share/cmake/torch/THConfig.cmake
-- Up-to-date: ~/torch/install/lib/libluaT.so
-- Up-to-date: ~/torch/install/include/luaT.h
-- Up-to-date: ~/torch/install/share/cmake/torch/luaTConfig.cmake
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUA=~/torch/install/bin/luajit -DLUALIB= -DLUA_BINDIR="~/torch/install/bin" -DLUA_INCDIR="~/torch/install/include" -DLUA_LIBDIR="~/torch/install/lib" -DLUADIR="~/torch/install/lib/luarocks/rocks/torch/scm-1/lua" -DLIBDIR="~/torch/install/lib/luarocks/rocks/torch/scm-1/lib" -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/torch/scm-1" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
torch scm-1 is now built and installed in ~/torch/install/ (license: BSD)
Updating manifest for ~/torch/install/lib/luarocks/rocks
dok scm-1 is now built and installed in ~/torch/install/ (license: BSD)
gcc -O2 -fPIC -I~/torch/install/include -c readline.c -o readline.o
gcc -shared -o readline.so -L~/torch/install/lib readline.o -lreadline
Updating manifest for ~/torch/install/lib/luarocks/rocks
trepl scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/sys/build
[ 50%] Built target sys
[100%] Built target sys_static
[ 50%] Built target sys
[100%] Built target sys_static
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/sys/1.1-0/lib/libsys.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/sys/1.1-0/lib/libsys.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/sys/1.1-0/lua/sys/init.lua
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/sys/1.1-0" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
sys 1.1-0 is now built and installed in ~/torch/install/ (license: BSD)
Updating manifest for ~/torch/install/lib/luarocks/rocks
xlua 1.0-0 is now built and installed in ~/torch/install/ (license: BSD)
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
nn scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/extra/graph/build
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/graphviz.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/Edge.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/Node.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/init.lua
cmake -E make_directory build;
cd build;
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/graph/scm-1";
make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
graph scm-1 is now built and installed in ~/torch/install/ (license: UNKNOWN)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/extra/nngraph/build
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/ModuleFromCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/node.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/simple_print.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/gmodule.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/utils.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/nesting.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/graphinspecting.lua
cmake -E make_directory build;
cd build;
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/nngraph/scm-1";
make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
nngraph scm-1 is now built and installed in ~/torch/install/ (license: UNKNOWN)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/image/build
[ 12%] Built target image
[ 25%] Built target image_static
[ 37%] Built target jpeg
[ 50%] Built target jpeg_static
[ 62%] Built target png
[ 75%] Built target png_static
[ 87%] Built target ppm
[100%] Built target ppm_static
[ 12%] Built target image
[ 25%] Built target image_static
[ 37%] Built target jpeg
[ 50%] Built target jpeg_static
[ 62%] Built target png
[ 75%] Built target png_static
[ 87%] Built target ppm
[100%] Built target ppm_static
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libppm.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libppm.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libjpeg.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libjpeg.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libpng.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libpng.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libimage.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libimage.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/fabio.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/fabio.png
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/lena.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/lena.png
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/win.ui
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/README.md
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
image 1.1.alpha-0 is now built and installed in ~/torch/install/ (license: BSD)
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
optim 1.0.5-0 is now built and installed in ~/torch/install/ (license: BSD)
Found CUDA on your machine. Installing CUDA packages
-- Found Torch7 in ~/torch/install
-- Configuring incomplete, errors occurred!
See also "~/torch/extra/cutorch/build/CMakeFiles/CMakeOutput.log".
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/cutorch/scm-1" && make -j$(getconf _NPROCESSORS_ONLN) install
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Torch7 in ~/torch/install
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "~/torch/extra/cutorch/build/CMakeFiles/CMakeOutput.log".
EDIT2:--------------------------------------------
my instant and sorceries NN finished training last night,
here is the summery of a 10M dump. @ Hardcast: how do you format your dumps so prettily? is it just part of the decode.py?
====================
68977 valid cards, 321 invalid cards.
69298 cards parsed, 288 failed to parse
--------------------
10541 unique card names
--------------------
6 represented colors (including colorless as 'A'), 25 combinations
Breakdown by color:
A B G R U W
52 11012 9180 19880 22465 7945
Breakdown by number of colors:
0 1 2 3
52 68068 1120 58
--------------------
37 unique card types, 26 combinations
Breakdown by type:
instant sorcery instance sorcry insant sorcare sorcary in any sorcerr
38280 30972 5 4 3 2 2 2 2 2
--------------------
5 unique subtypes, 5 combinations
-- Popular subtypes: --
arcane 2106
trap 218
ancane 1
trectare 1
OO 1
-- Top combinations: --
arcane 2106
trap 218
ancane 1
trectare 1
OO 1
--------------------
0 unique supertypes, 0 combinations
Breakdown by supertype:
--------------------
16 different CMCs, 972 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 48
29 14073 17699 12724 10174 8023 3622 1347 701 476 277 116 24 6 6 1
-- Popular mana costs: --
{U} 5082
{R} 3708
{1}{R} 2967
{1}{U} 2702
{1}{U} 2589
{G} 2305
{1}{R} 2019
{2}{U} 1482
{1}{W} 1260
{1}{G} 1242
--------------------
5 unique p/t combinations
-- Popular p/t values: --
choose any number of target creatures.\draw a card. 1
prevent all combat damage that would be dealt to and dealt by that creature this turn.\draw a card. 1
reveal the top three cards of your library into your graveyard, then draw cards equal to that card's converted mana cost. 1
search target opponent's library for an artifact, creature, enchantment, or land card from his or her hand onto the battlefield. 1
ircerture becoters the number of cards named @ in all graveyards. 1
--------------------
Loyalty values:
s 3
--------------------
Card text ranges from 0 to 761 characters in length
Card text ranges from 0 to 5 lines
-- Line counts by frequency: --
1 48995
2 19323
3 907
4 54
0 17
5 2
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 16 69298
by_power 0 0
by_loyalty 1 3
by_textlen 466 69298
by_cost 972 69298
by_supertype 0 0
by_color_inclusive 6 70534
by_name 10541 69297
by_pt 5 5
by_supertype_inclusive 0 0
by_subtype_inclusive 5 2327
by_toughness 0 0
by_type 26 69290
by_textlines 6 69298
by_type_inclusive 37 69302
by_color 25 69298
by_color_count 4 69298
by_subtype 5 2327
********************
Shortest Cardname: (3)
hex
Longest Cardname: (34)
demonic attouning war of desprayar
-- Most duplicated names: --
fire and brimstone 1437
seismic spike 869
trailblazer 861
reap intellect 765
dismal failure 690
predator's rapport 567
seize the day 567
dispel 549
crackling doom 539
devouring rage 528
--------------------
Longest card type: (70)
shated lose anyonwored creature that dealt damage this turn if exiles.
Longest subtype: (8)
trectare
No cards indexed by supertype?
--------------------
Longest mana cost: (93)
{5}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}
|reap intellect||sorcery|||Y||{^^^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^^}|\draw a card.|
Largest cmc: (48)
{5}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}
|reap intellect||sorcery|||Y||{^^^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^^}|\draw a card.|
--------------------
No cards indexed by power?
No cards indexed by toughness?
--------------------
Most lines of text in a card: 5
|explosive imputs||sorcery|||N||{BB^^BB^}|destroy target creature an opponent controls. \that opponent may put in onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\choose an opponent. untap all nonland permanents you control and all nonland permanents that player controls.|
Most chars in a card text: 761
|arc lightning||sorcery|||N||{^^^^^^BB}|target opponent discards two cards and you gain &^ life. then exile the top X cards of his or her library into his or her graveyard. if @ was cast from a graveyard, copy that spell twice instead. you may choose new targets for the copies.\fliphfered ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\morbid ~ you may cast that card for as long as it remains exiled. until your next turn, creatures that player controls can bast the creature this turn.|
--------------------
There were 321 invalid cards.
{'rarity': [(0, '\x1b[mcreating an lstm...\x1b[0m\t')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf9082d8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf9081b8>)], 'name': [(0, 'rise of the dark realms')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce34e638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce34e518>)], 'name': [(0, 'might of oaks')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'subtypes': [(4, ['trectare'])], 'pt': [(6, 'ircerture becoters the number of cards named @ in all graveyards.')], 'name': [(0, 'archive that')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['OO'])], 'pt': [(6, 'prevent all combat damage that would be dealt to and dealt by that creature this turn.\\draw a card.')], 'name': [(0, 'mass appeal')], 'types': [(2, ['instant'])], 'rarity': [(5, '{^GG}')]}
{'rarity': [(5, '{^^^^BB}')], 'name': [(0, 'stronghold no creat')], 'pt': [(6, "search target opponent's library for an artifact, creature, enchantment, or land card from his or her hand onto the battlefield.")], 'loyalty': [(3, 's')]}
{'rarity': [(5, '{RB^BB}')], 'name': [(0, 'chain of sear')], 'pt': [(6, 'choose any number of target creatures.\\draw a card.')], 'loyalty': [(3, 's')]}
{'rarity': [(5, '{^UU^^}')], 'name': [(0, "chandre's cramp")], 'pt': [(6, "reveal the top three cards of your library into your graveyard, then draw cards equal to that card's converted mana cost.")], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6491950>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6491830>)], 'name': [(0, 'flame of shudls')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ddd448c0>)], 'other': [(9, 'put two &^/&^ green saproling creature tokens onto the battlefield. they gain first strike until end of turn.')], 'name': [(0, 'warning nect')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ddac0878>)], 'other': [(9, 'draw a card for each tapped creature target opponent controls.')], 'name': [(0, 'paranoid screecion')], 'pt': [(6, 'N')], 'loyalty': [(3, 'orcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd3da560>)], 'other': [(9, 'wither \\@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'touch of near')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'glimpse that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16dd1427a0>)], 'supertypes': [(1, ['clap'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'up to two target creatures each get +&^^/+& and gain first strike until end of turn.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd091f80>)], 'other': [(9, '@ deals &^ damage to target creature or player and &^ damage to another target creature or player instead.')], 'name': [(0, 'vicoous bread')], 'pt': [(6, 'O')], 'loyalty': [(3, 'orcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd04f0e0>)], 'other': [(9, '@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dce6b878>)], 'other': [(9, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it entes of a card target spell or permanent becomes blue until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcd32680>)], 'other': [(9, 'destroy target artifact or enchantment. if that creature was blue or black, put a &^/&^^ green spider creature token with reach onto the battlefield.')], 'name': [(0, 'shifting sear')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcd32e60>)], 'other': [(9, '@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature instead.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'spinal embruce')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16dccc3a70>)], 'supertypes': [(1, ['sire'])], 'loyalty': [(3, 'instant')], 'other': [(9, "return target creature to its owner's hand.\\draw a card.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dcba3ef0>)], 'name': [(0, 'cruel from euse')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dca2f128>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of creatures that died this way.')], 'name': [(0, 'trail of the goryo')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dc955c68>)], 'name': [(0, 'angelic faile')], 'text': [(8, <manalib.Manatext instance at 0x7f16dc955d88>)], 'rarity': [(5, 'A')], 'other': [(9, '\\each player sacrifices a permanent.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{RR^^^}'), (10, 'creatures you control gain shroud until end of turn. \\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc726290>)], 'name': [(0, 'mana cet')], 'types': [(2, ['instane'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc6b1878>)], 'other': [(9, 'destroy target nonbasic land unless its controller has @ deal &^^^^^^^ damage to him or her.')], 'name': [(0, 'last storm')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc1ed368>)], 'other': [(9, 'look at the top four cards of your library into your graveyard.\\draw a card.')], 'name': [(0, "predator's rappo")], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbf39098>)], 'other': [(9, 'choose an opponent. you and that player each draw three cards. = you destroy all nonbasic lands.]')], 'name': [(0, 'slice of nowarva')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbd44c20>)], 'name': [(0, 'searing sale')], 'types': [(2, ['sorach'])]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16dbd1fe18>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbd1fcf8>)], 'subtypes': [(4, ['arcane'])], 'other': [(9, '\\pat the number of cards in your library, then put a card of the creature the sacrificed this way, its controller discards a card.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbbb5c20>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield tapped. then shuffle your library.')], 'name': [(0, 'warling gloom')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return another target creature to its owner's hand. exile @ with three % counters on it.\\suspend &^^^~{UU^^}")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16db8cf440>)], 'name': [(0, "petra's resulf")], 'types': [(2, ['sorcale'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db6f8830>)], 'other': [(9, 'search your library for an enchantment card and put it onto the battlefield. then shuffle your library.')], 'name': [(0, 'death by draghania')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, "ambition's cost")], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16db5e5b90>)], 'supertypes': [(1, ['sor', 'dectioy'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'target player sacrifices a creature.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db494b90>)], 'other': [(9, '@ deals &^ damage to target creature or player.\\when a spell or ability an opponent controls permanent or stronch or blue spell.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{RR^^^}'), (10, 'destroy target land. if that land was legendary, its controller sacrifices another land.')], 'subtypes': [(4, ['sopcrer'])], 'supertypes': [(1, ['in'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16db04c290>)], 'name': [(0, 'seifting stonm')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dae2c050>)], 'other': [(9, 'converge ~ gain control of target creature has on. exile the top card of your library, then put them back in any order.]')], 'name': [(0, 'balancing act')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16daaf4b90>)], 'other': [(9, 'distribute any number of creatures.\\@ deals &^^^^^ damage to target creature or player.')], 'name': [(0, 'might of old krosismans')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16daa5d3b0>)], 'name': [(0, 'strength in numbers')], 'text': [(8, <manalib.Manatext instance at 0x7f16daa5d4d0>)], 'rarity': [(5, 'N')], 'other': [(9, "sicker and green creatures this turn, you may pay {UU} rather than pay @'s mana cost.\\exile any numbers fermeing the top. all creatures blocking that spell.")], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da66e4d0>)], 'other': [(9, 'search your library for a basic land card and put it onto the battlefield. then shuffle your library.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'name': [(0, "all sun's throos")], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16da46b320>)], 'name': [(0, 'crop rotation')], 'text': [(8, <manalib.Manatext instance at 0x7f16da46b440>)], 'rarity': [(5, 'N')], 'other': [(9, "if an opponent controls more lands than target opponent's graveyard, hand, and library for any number of cards with that name and exile them. then that player shuffles his or her library.")], 'types': [(2, ['instant'])]}
{'other': [(9, '{^RR^^RR}'), (10, '@ deals &^^^^ damage to target player and you gain &^^^^^^^^^^^^^^^^^^^^ life.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16da098c20>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d9e76710>)], 'name': [(0, 'serene offering')], 'text': [(8, <manalib.Manatext instance at 0x7f16d9e76830>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['instant'])]}
{'other': [(9, '{GG^^}'), (10, 'attacking creatures you control get +&^/+& until end of turn if you control a creature with power &^^^^ or greater.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9db1b00>)], 'name': [(0, 'song the brasp')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9dbe440>)], 'other': [(9, '@ deals &^^^^ damage divided as you choose among one, two, or three target creatures and each player.\\rebound')], 'name': [(0, 'death by draghania')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d97bf200>)], 'name': [(0, 'stream of consciousne')], 'text': [(8, <manalib.Manatext instance at 0x7f16d97bf320>)], 'rarity': [(5, 'A')], 'other': [(9, '\\search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB^^}'), (10, 'return target creature card from your graveyard to your hand.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d95ab0e0>)], 'name': [(0, 'spite of mogg')], 'types': [(2, ['sorvery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9568170>)], 'other': [(9, 'wither \\@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'touch of near')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'streech')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d9488830>)], 'supertypes': [(1, ['ing', 'that'])], 'loyalty': [(3, 'instant')], 'other': [(9, '@ deals &^^ damage to target creature or player.')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d8bfb488>)], 'name': [(0, 'army of the damnat')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8bede60>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'aspen the reir')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d899b518>)], 'name': [(0, 'fire a mounnyy')], 'pt': [(6, '{RR}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8783d40>)], 'other': [(9, 'you may cast @ as though it had flash if you pay {^^} more to cast it. \\@ deals X damage to each creature and each player.')], 'name': [(0, 'bestial venomanio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d86046c8>)], 'name': [(0, 'vengeance')], 'text': [(8, <manalib.Manatext instance at 0x7f16d86047e8>)], 'rarity': [(5, 'A')], 'other': [(9, "\\put target nonland permanent on top of its owner's library.\\madness {BB}")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{UUUU}'), (10, "return target permanent to its owner's hand. then that player gains control of up to three tire or black creatures.")], 'subtypes': [(4, ['ancant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d85b55f0>)], 'name': [(0, 'flame fusillad')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'flames of the night')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d813d128>)], 'other': [(9, "return target nonland permanent you don't control to its owner's hand.")], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['surat'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d810be18>)], 'other': [(9, '@ deals &^^ damage to target creature or player.\\madness {RR}')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['A'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7ce1bd8>)], 'name': [(0, "all sun's growth")], 'pt': [(6, '{^UU^^UU^}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7a14b90>)], 'other': [(10, '{^RR}'), (11, '@ deals &^^^ damage to target creature or player and you gain &^^^^ life.')], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d7973f80>)], 'name': [(0, 'entering')], 'text': [(8, <manalib.Manatext instance at 0x7f16d79780e0>)], 'rarity': [(5, 'A')], 'other': [(9, '\\return the top card of your library. put one of those cards into your hand and the rest on the bottom of your library in any order.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d776fcf8>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'choose an opponent. you and that player each draw three cards.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'cryocister that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d761b1b8>)], 'supertypes': [(1, ['sarce'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^} plus an additional {^^} for each card named @ in each graveyard.')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d7459050>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'target creature gets -&^^^/-&^^^ until end of turn.\\cycling {^^} \\when you cycle @, you may put four +&^/+&^ counters on it.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d746dd40>)], 'name': [(0, 'simplify')], 'text': [(8, <manalib.Manatext instance at 0x7f16d746de60>)], 'rarity': [(5, 'A')], 'other': [(9, "the next time target permanent to its owner's hand unless that player pays {^^}.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return the top four cards of your library, then put them back in any order. = look at the top five cards of his or her library, then put the card on top of it.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d73c6c20>)], 'name': [(0, 'recoup')], 'types': [(2, ['soucher'])]}
{'other': [(9, '{BB^}'), (10, 'destroy target creature if it has the least power and toughness onto the battlefield. sacrifice that creature at the beginning of the next end step.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d72c1b48>)], 'name': [(0, 'devouring rasp')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'flame fusillad')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d7244e60>)], 'other': [(9, 'target creature gets +&^^^/+& and gains lifelink until end of turn.')], 'subtypes': [(4, ['ancant'])], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^^BB^}'), (10, 'return up to two target creature cards from your graveyard to your hand.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d706eea8>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'dise'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6edeb00>)], 'other': [(9, 'countertype % poison\\target player loses &^ life and you gain &^ life.')], 'name': [(0, 'balancing act')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6e9cfc8>)], 'other': [(9, 'put two &^/&^ white soldier creature tokens onto the battlefield.')], 'name': [(0, "win's enchangmant")], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d6c2c518>)], 'name': [(0, 'flusterstorm')], 'text': [(8, <manalib.Manatext instance at 0x7f16d6c2c638>)], 'rarity': [(5, 'N')], 'other': [(9, '\\cast that card from it. you gain life equal to the damage dealt, but not more than the amount of {BB} spent on X, the player chooses an artifact card from it. that player discards that card.\\dredge &^^')], 'types': [(2, ['instant'])]}
{'other': [(9, '{WW}'), (10, 'target creature gets +&^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6989098>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'divery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6511c20>)], 'other': [(9, "destroy target nonbasic land you don't control and target nonbasic land of an opponent's choice you don't control.\\overload {^RR^^RRRR}")], 'name': [(0, 'imperial sest')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{^^UU}'), (10, 'draw three cards, then discard three cards at random.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d594a488>)], 'name': [(0, 'temporal eddlifieve')], 'types': [(2, ['ant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d589bcb0>)], 'other': [(9, 'target creature gets +&^^^/+& and gains lifelink until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d581ebd8>)], 'name': [(0, 'prouph')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d57e71b8>)], 'other': [(9, "as an additional cost to cast @, sacrifice a creature.\\add to your mana pool an amount of {BB} equal to the sacrificed creature's power to the vatame.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d503f440>)], 'other': [(9, 'target player reveals his or her hand. you choose a card from it with converted mana cost &^^^ or greater and exile that card.')], 'name': [(0, 'wind shit')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d49c2128>)], 'other': [(9, 'exile all cards from all graveyards.')], 'name': [(0, 'savage puncrafio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d452f638>)], 'name': [(0, 'might of old kroside')], 'text': [(8, <manalib.Manatext instance at 0x7f16d452f758>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d44459e0>)], 'other': [(9, '@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d41f5a28>)], 'name': [(0, 'ashen to dust')], 'text': [(8, <manalib.Manatext instance at 0x7f16d41f5b48>)], 'rarity': [(5, 'O')], 'other': [(9, "sourn, creatures can't block this turn.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{GG^^^^}'), (10, 'put two &^^/&^^^ green centaur creature tokens onto the battlefield.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3f96f38>)], 'name': [(0, 'recoup')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3f52908>)], 'other': [(9, 'choose a color. white creatures you control also gain first strike until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d3e87170>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16d3e87290>)], 'rarity': [(5, 'A')], 'other': [(9, "return all nonland permanents to their owners' hands.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB}'), (10, 'destroy target nonblack creature if its toughness is legat creature defendigh that wall.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3de5ef0>)], 'name': [(0, 'mudgle the middess')], 'types': [(2, ['souch'])]}
{'other': [(9, '{WW}'), (10, 'put up to three target creatures controlled by the same player. exile one of those creatures that shuffle it on top of his or her library.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3cb3ea8>)], 'name': [(0, 'fight tempy')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^^^RR}'), (10, '@ deals &^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets +&^^^^/+&^^^^ until end of turn instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3af9fc8>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'other': [(9, '{BB}'), (10, 'target creature gets -&^/-&^ until end of turn.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3902128>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'dise'])]}
{'name': [(0, 'frush for mort')], 'pt': [(6, 'ant')], 'text': [(8, <manalib.Manatext instance at 0x7f16d390db90>)], 'rarity': [(5, 'O')], 'other': [(9, 'uncast target spell. its controller discards a card.')], 'types': [(2, ['inst'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3850ea8>)], 'other': [(9, "switch target creature's power and toughness until end of turn.\\draw a card.")], 'name': [(0, "predator's rappo")], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{^^^RR}'), (10, '@ deals &^^^ damage to target creature or player.\\suspend &^^~{^RRRR}')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3876170>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'other': [(9, '{^^BB^}'), (10, "return target creature card from your graveyard to the battlefield. if it's your turn, scry &^^.")], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d36cc368>)], 'name': [(0, 'contostic mught')], 'types': [(2, ['shat'])]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3223998>)], 'name': [(0, 'might of onk')], 'pt': [(6, '{UU}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d3223ea8>)], 'name': [(0, 'recollect')], 'text': [(8, <manalib.Manatext instance at 0x7f16d3223fc8>)], 'rarity': [(5, 'N')], 'other': [(9, 'when that creature dies this turn, you gain life equal to the number of creatures you control in excess of the number of creatures target opponent controls.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2dadef0>)], 'other': [(9, '@ deals &^^ damage to target creature or player.\\flashback {^^^RR^^}')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{^^BB^}'), (10, 'destroy target nonblack creature and red card in it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d22e07e8>)], 'name': [(0, 'scrap in spiral')], 'types': [(2, ['ssacred', 'activatting'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2015bd8>)], 'other': [(9, 'target player gains control of up them into your hand and the rest into your graveyard.')], 'name': [(0, 'time stretch')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB^^}'), (10, 'put three +&^/+&^ counters on it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1fc68c0>)], 'name': [(0, 'dragon in')], 'types': [(2, ['intt'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1fe2d40>)], 'other': [(9, '\\target creature gets +&^^/+& and gains first strike until end of turn.')], 'name': [(0, 'flames of the forgo')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'dight')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16d343bb00>)], 'supertypes': [(1, ['of', 'strike'])], 'loyalty': [(3, 'instant')], 'other': [(9, "put target creature on top of its owner's library.")]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1c416c8>)], 'other': [(9, "creatures without flying can't block this turn. \\draw a card.")], 'name': [(0, 'wild guess')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'planar of growth')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d1a5da28>)], 'supertypes': [(1, ['sordery'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "look at the top three cards of target player's library, then put them back in any order.]\\entwine {BB}")]}
{'name': [(0, 'archangla re')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d1a10950>)], 'supertypes': [(1, ['inveat'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of creatures target opponent controls.')]}
{'other': [(9, '{RR}'), (10, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d190b638>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'subtypes': [(4, ['arcane'])], 'other': [(9, 'target creature you control fights target creature an opponent controls.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'name': [(0, 'devouring rage')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16d1925050>)]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d189bfc8>)], 'name': [(0, 'dispel')], 'text': [(8, <manalib.Manatext instance at 0x7f16d189d128>)], 'rarity': [(5, 'O')], 'other': [(10, 'x'), (12, '{RRXXRR}'), (13, 'destroy X target nonblack creatures. @ deals X plus &^^ damage to that creature instead if seven or more cards are in your graveyard.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d15da5f0>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gains shadow until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d11314d0>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield tapped. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'spic in fear')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d113e680>)], 'other': [(9, "put target nonland permanent on top of its owner's library.")], 'name': [(0, 'fall of the gor')], 'pt': [(6, 'N')], 'loyalty': [(3, 'irstert')]}
{'subtypes': [(4, ['trap'])], 'other': [(9, "if an opponent cast a creature spell this turn, you may pay {UU} rather than pay @'s mana cost.\\exile any numbers fermanent cards with converted mana cost &^^^^ or less. it can't be regenerated.")], 'name': [(0, 'inferno trap')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16d1100a28>)]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d0f84dd0>)], 'name': [(0, 'day of judgment')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'funge of ')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d0afd0e0>)], 'supertypes': [(1, ['isture'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^}.\\storm')]}
{'other': [(9, '{^^^WW}'), (10, '[&^ = creatures you control get +&^/+&^ until end of turn. = untap all creatures you control.]\\entwine {^WW}')], 'subtypes': [(4, ['instant'])], 'supertypes': [(1, ['sor'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d09513f8>)], 'name': [(0, 'magnetic intend')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d0604e60>)], 'rarity': [(5, 'N')], 'other': [(9, 'all creatures get -&^^/-&^^ until end of turn.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'stroughther that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d01c8ab8>)], 'supertypes': [(1, ['cupnation'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'put two &^/&^ green spider creature tokens onto the battlefield.')]}
{'other': [(10, 'O'), (12, '{RR^}'), (13, '@ deals damage to target creature equal to twice the number of mountains returned this way.')], 'subtypes': [(4, ['srclockr'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d01fba28>)], 'name': [(0, 'conjusered plogien')], 'types': [(2, ['sorcare'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cff747a0>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors of mana spent to cast @.\\draw a card.')], 'name': [(0, 'shifting stonger')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfd81488>)], 'other': [(9, 'put two &^/&^ green squirie creature tokens onto the battlefield. if @ was kicked, that creature gets +&^^^^^^/+&^^^^^^ until end of turn.')], 'name': [(0, 'flames of the gorgo')], 'pt': [(6, 'N')], 'loyalty': [(3, 'irstert')]}
{'subtypes': [(4, ['arcane'])], 'other': [(9, 'search your library for up to two creature cards, reveal those cards and put them into your hand. then shuffle your library.')], 'name': [(0, 'devouring rage')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16cfc1cf80>)]}
{'subtypes': [(4, ['acce'])], 'other': [(10, '{RR^}'), (11, "@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it ent ond an opponent can' a land card from his or her hand onto the battlefield.")], 'name': [(0, 'scorching sear')], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfaf2f80>)], 'other': [(9, 'put X -&^/-&^ counters on each of X target creatures and/or players.')], 'name': [(0, 'savage puncrafio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cf998f80>)], 'name': [(0, 'soul feast')], 'text': [(8, <manalib.Manatext instance at 0x7f16cf99a0e0>)], 'rarity': [(5, 'N')], 'other': [(9, "\\sacrifice a creature rather than pay @'s mana cost.\\creatures you control get +&^/+& until end of turn.")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf8cc4d0>)], 'other': [(9, 'return target creature card from your graveyard to your hand.\\draw a card.')], 'name': [(0, 'prenal of phortho')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf452710>)], 'other': [(9, '[&^ = destroy target wall creature. = destroy target creature if it has the least power and toughness onto the battlefield.]')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'brain pry')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cf460f38>)], 'supertypes': [(1, ["'sscelverge"])], 'loyalty': [(3, 'instant')], 'other': [(9, 'destroy target enchantment. you gain life equal to its toughness.')]}
{'supertypes': [(1, ['inctant'])], 'other': [(9, 'stupped that player pays {^^} players the seling controller if {GG} was spent to cast @. exile @ from your graveyard to your hand.')], 'name': [(0, 'archangla re')], 'loyalty': [(3, 'sorcare')]}
{'other': [(9, '{^^UU}'), (10, "meloceare ~ if an opponent had an artifact or creature card in an opponent's graveyard and the rest on the bottom of your library in any order.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cee1a7e8>)], 'name': [(0, 'burn at the stark')], 'types': [(2, ['sorcerre'])]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cee3c098>)], 'name': [(0, 'might of onk')], 'pt': [(6, '{BB}')]}
{'name': [(0, 'stronghold nig')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16ced51c20>)], 'supertypes': [(1, ['tunce'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "return one or two target creatures to their owners' hands.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cea5be60>)], 'name': [(0, 'withering force')], 'text': [(8, <manalib.Manatext instance at 0x7f16cea5bf80>)], 'rarity': [(5, 'A')], 'other': [(10, 'sorcery'), (13, 'O'), (15, '{BB^}'), (16, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors that creature and exile them. then that player shuffles his or her library.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce7b3b00>)], 'name': [(0, 'redeem')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce7b3c20>)], 'rarity': [(5, 'O')], 'other': [(9, "sorcery all creatures that aren't of a type chosen this way. they can't be regenerated.")], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce56f830>)], 'name': [(0, 'mass appeal')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce56f950>)], 'rarity': [(5, 'N')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce4a4fc8>)], 'name': [(0, "predator's rapport")], 'text': [(8, <manalib.Manatext instance at 0x7f16ce4a6128>)], 'rarity': [(5, 'O')], 'other': [(9, 'put two &^/&^ red goblin creature tokens onto the battlefield.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce3fd170>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gains flying until end of turn.\\sacrifice a spirit or arcanent.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'pt': [(6, '{^^^^^^BB}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce36fd40>)], 'name': [(0, 'chain of soul')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'Nr')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce1cf680>)], 'other': [(9, "for each tapped nonland permanent that player controls can't block this turn. \\draw a card.")], 'name': [(0, "all sun's throos")], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce18c998>)], 'rarity': [(5, 'N')], 'other': [(9, "all creatures get -&^^/-&^^ until end of turn. whenever a creature dies this turn, you gain life equal to that creature's toughness.")], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdf1b488>)], 'name': [(0, 'prouph')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cde8d248>)], 'other': [(10, '{UU}'), (11, "look at target opponent's hand and choose a card from it. put it onto the battlefield. if you do, that player discards that card.")], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cda0ca70>)], 'name': [(0, 'decree of pain')], 'text': [(8, <manalib.Manatext instance at 0x7f16cda0cb90>)], 'rarity': [(5, 'A')], 'other': [(9, 'draw three cards.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'spitener')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16cd396488>)], 'supertypes': [(1, ['sire'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'put five &^/&^ white soldier creature tokens onto the battlefield. it has "sacrifice this creature: add {^} to your mana pool."')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd265128>)], 'other': [(9, "return target nonland permanent you control and all nonland permanent with converted mana cost among and that spell's controller instead if a creature died this turn.")], 'name': [(0, "chainer's edict")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ccd22128>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors of mana spent to cast @.\\draw a card.')], 'name': [(0, 'wind shit')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccc12ab8>)], 'name': [(0, 'mana cet')], 'types': [(2, ['instane'])]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccbb84d0>)], 'name': [(0, 'flame of spiral')], 'types': [(2, ['shadeddes'])]}
{'other': [(9, '{^^^RR^RR^}'), (10, 'destroy all nonbasic lands. for each land destroyed this way, its controller may search his or her library for a fore to ifstail cards and put them onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cca9fb48>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'the', 'voud'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc7c0758>)], 'other': [(9, "uncast target spell that's the second spell cast this turn.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cc6ac290>)], 'name': [(0, 'consign to dust')], 'text': [(8, <manalib.Manatext instance at 0x7f16cc6ac3b0>)], 'rarity': [(5, 'N')], 'other': [(9, "\\wan an opponent's graveyard or hour hibrary for a card and put that card into your hand. then shuffle your library.\\draw a card.")], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc605ef0>)], 'other': [(9, "@ deals &^^^ damage to target creature or player. you gain life equal to the damage dealt, but not more than the amount of {BB} spent on X, the player can't activate this ability on the attacking ottan hes one.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'irstant')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc639f38>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'other': [(9, 'Xrexture that creature gets +&^^^/+& and gains trample until end of turn.')], 'name': [(0, 'fireball')], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU^}'), (10, 'uncast target spell unless its controller pays {^^^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc2beea8>)], 'name': [(0, 'burn at the stark')], 'types': [(2, ['sorcerre'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16cbeec4d0>)], 'rarity': [(5, 'N')], 'other': [(10, '{^RR^^}'), (11, 'each target artifact sacrifices a land. \\prevent all combat damage that would be dealt this turn by creatures with flying.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16cbd8eab8>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb9e8488>)], 'other': [(9, "return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'name': [(0, 'searing stank')], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU}'), (10, 'look at target opponent cast it croated this turn.\\cycling {^^}')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd8db0e0>)], 'name': [(0, 'canopy clutch')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'election')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16cd8e61b8>)], 'supertypes': [(1, ['imsurning'])], 'loyalty': [(3, 'instant')], 'other': [(9, "return target nonland permanent to its owner's hand. if @ was kicked, it has splying or as will no white if you control a creature with power &^^^^ or greater.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cb78b5f0>)], 'name': [(0, 'reap intellect')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb78b710>)], 'rarity': [(5, 'A')], 'other': [(9, "\\destroy that creature at the beginning of the next turn's upkeep.")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb518950>)], 'other': [(10, '{^RR}'), (11, "cast @ only if you control a creature with power &^^^^ or greater. creatures destroyed this way can't be regenerated.")], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'name': [(0, 'devout intond')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb4d2908>)], 'supertypes': [(1, ['stray'])], 'loyalty': [(3, 'irstert')], 'other': [(9, 'choose any number of target players each gain life equal to the number of creatures target opponent controls.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb382878>)], 'other': [(9, '@ deals &^^ damage to target creature or player.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb255e18>)], 'other': [(9, '@ deals &^^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets +&^^^^/+&^^^^ until end of turn instead if a creature died this turn.')], 'name': [(0, 'cauldron enchance')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'recoup')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb1499e0>)], 'other': [(9, '@ deals &^^ damage to target creature or player.')], 'subtypes': [(4, ['sorcerre'])], 'types': [(2, ['souchlall'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb0b4170>)], 'other': [(9, "return target nonland permanent you control and all nonland permanent with converted mana cost among and the discard an opponent's graveyard, hand, and library for any number of cards with the same name as that spell and exile them. then that player shuffles his or her library.")], 'name': [(0, 'stone hor')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cae74518>)], 'name': [(0, 'rain of salt')], 'text': [(8, <manalib.Manatext instance at 0x7f16cae74638>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card for each creature target player controls.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'inferno trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cacb3d40>)], 'other': [(9, 'if an opponent controls an island and you may search your library for a card and put that card into your hand. then shuffle your library.')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'fire trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cab50200>)], 'other': [(9, 'draw two cards, then discard two cards.\\uncast target spell.')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16caabe950>)], 'other': [(9, 'searching a creature type of your choice from your graveyard to your hand.')], 'name': [(0, 'fall of the gor')], 'pt': [(6, 'A')], 'loyalty': [(3, 'orcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16caa32f80>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16caa380e0>)], 'rarity': [(5, 'O')], 'other': [(9, '@ deals &^^^^^ dramage to that creature instead.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^RR}'), (10, '@ deals &^ damage to target creature or player.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca9eeb00>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca943ab8>)], 'rarity': [(5, 'N')], 'other': [(9, 'each player loses &^ life for each creature he or she controls.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'searing scomm')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca7f3ef0>)], 'supertypes': [(1, ['sirce'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'you may exile two blue creature cards from your graveyard to your hand.')]}
{'other': [(10, '{GG^}'), (11, 'destroy target creature with flying. its controller gets a % counter.')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca49ecf8>)], 'rarity': [(5, 'instant')], 'name': [(0, 'worldphepeat')], 'loyalty': [(3, 'srrerouts')]}
{'name': [(0, 'inferno trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca2743f8>)], 'other': [(9, 'target creature gets +&^^/+& and gains first strike until end of turn.\\overload {UU^^}')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU^}'), (10, 'uncast target spell unless its controller pays {^}. draw a card for each time @ was kicked.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca22b0e0>)], 'name': [(0, "all sun's zonit")], 'types': [(2, ['numana'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca048ef0>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9f83cf8>)], 'other': [(9, 'convoke \\target creature gets +&^^/+& and gains first strike until end of turn.')], 'name': [(0, 'reaping the aewhs')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c9f2c1b8>)], 'name': [(0, 'lightning blow')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9f2c2d8>)], 'rarity': [(5, 'O')], 'other': [(9, 'when you cycle @, it deals &^^^ damage to that creature or player instead if you control a wourn frem instead if seven or more cards are in your graveyard.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9e4e170>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{RR}'), (10, 'draw two cards, then discard three cards at random.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9de3320>)], 'name': [(0, 'beckon app')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9bc1290>)], 'other': [(9, "@ deals &^^ damage to each creature and each player. if you control a white permanent, return @ to its owner's hand.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c97bb758>)], 'name': [(0, 'seize the day')], 'text': [(8, <manalib.Manatext instance at 0x7f16c97bb878>)], 'rarity': [(5, 'A')], 'other': [(9, 'put two &^/&^ green insect creature tokens onto the battlefield.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c90de488>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16c90de5a8>)], 'rarity': [(5, 'O')], 'other': [(9, 'instant'), (12, 'O'), (14, '{WW^}'), (15, 'choose a creature type. all creatures of the creature type of your choice until end of turn.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9005f38>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'target player sacrifices a creature.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'dismic shud')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8f64e18>)], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^^^}.\\draw a card.')], 'types': [(2, ['sorcryor'])]}
{'other': [(9, '{RR}'), (10, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature or player this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8d89b48>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c8d128c0>)], 'name': [(0, 'pyroblast')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8d129e0>)], 'rarity': [(5, 'O')], 'other': [(9, "\\wan an opponent's control lose lefeared until end of turn. \\draw a card.")], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8c90950>)], 'name': [(0, 'call the shy')], 'pt': [(6, '{^BB^^}')]}
{'other': [(9, '{^UU^^}'), (10, 'createre tap each creature gets +&^^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8b2ee18>)], 'name': [(0, 'rout')], 'types': [(2, ['shack', 'and', 'vinit'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8a86878>)], 'other': [(9, 'put two &^/&^ green squirie creature tokens onto the battlefield.')], 'name': [(0, 'cranial extraction')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'subtypes': [(4, ['ingane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8a3f950>)], 'name': [(0, 'warning intented of anony')], 'types': [(2, ['orace'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8987320>)], 'other': [(9, 'put two &^^/&^^ blue destal creature tokens onto the battlefield.\\storm')], 'name': [(0, 'conflux')], 'types': [(2, ['sorcery'])]}
{'name': [(0, "ass whuppin'")], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16c876f9e0>)], 'supertypes': [(1, ['sacry'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'flip a coin. if you win the flip, @ deals X damage to target creature or player.')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c86333f8>)], 'name': [(0, 'flame of souls')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8633518>)], 'rarity': [(5, 'O')], 'other': [(9, 'serce the black shelcorder creatures that player controls.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c81b4680>)], 'name': [(0, 'reality strobe')], 'text': [(8, <manalib.Manatext instance at 0x7f16c81b47a0>)], 'rarity': [(5, 'O')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c813ad40>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^^}'), (11, 'target creature gets +&^^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'brain pry')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16c7b60320>)], 'supertypes': [(1, ["'s", 'revellition'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'convoke \\return X target creature cards from your graveyard to your hand.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7a55440>)], 'other': [(10, '{RR}'), (11, '[&^ = uncast target spell unless its controller pays {^^}. clash with an opponent. if you win, that creature gets an additional +&^^/+&^^ and gains trample until end of turn.')], 'name': [(0, 'dismic shud')], 'types': [(2, ['sorcryor', 'damp'])], 'rarity': [(5, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7760f80>)], 'other': [(9, 'destroy target creature an opponent controls and empty his or her mana pool.')], 'name': [(0, 'ancisn the ffe')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['trap'])], 'other': [(9, 'if an opponent cast a blue spell this turn and onlyod card revealed this way, you put a &^^^/&^^^ green elephant creature token onto the battlefield. it has "sacrifice this creature: add {^} to your mana pool.')], 'name': [(0, 'fire trap')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16c76763f8>)]}
{'other': [(9, '{^UU^}'), (10, "return target creature to its owner's hand. then return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c757f518>)], 'name': [(0, "all suns'")], 'types': [(2, ['inder'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c759bc68>)], 'other': [(9, 'target creature gets +&^^/+&^^ until end of turn.\\splice onto arcane~sacrifice two manis.')], 'name': [(0, 'springic blessio')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'other': [(9, 'BBBB}'), (10, 'target creature gets -&^^^/-&^^^ until end of turn.\\cycling {^^}')], 'name': [(0, 'wild slash')], 'types': [(2, ['instant'])]}
{'other': [(9, '{GG}'), (10, 'put a +&^/+&^ counter on each of up to two target creatures.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c74a27a0>)], 'name': [(0, 'proupe')], 'types': [(2, ['sorce'])]}
{'other': [(9, '{WW^^}'), (10, 'destroy target artifact or enchantment. if that permanent was blue or black, draw a card.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c70cf830>)], 'name': [(0, "all suns'")], 'types': [(2, ['inde'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c70775f0>)], 'name': [(0, 'midnight recovery')], 'text': [(8, <manalib.Manatext instance at 0x7f16c7077710>)], 'rarity': [(5, 'O')], 'other': [(9, "instant artifact basic land type among land cards from their graveyards, and you may spend white mana instant or sorcery card from an opponent's graveyard on top of his or her library.")], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'martial coup')], 'pt': [(6, 'clunger')], 'text': [(8, <manalib.Manatext instance at 0x7f16c6cb9560>)], 'rarity': [(5, 'or')], 'other': [(11, 'O'), (13, '{UU}'), (14, 'creatures you control gain trample until end of turn.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6c40908>)], 'other': [(9, '@ deals &^ damage to target creature or player. scry &^.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c67c8170>)], 'other': [(9, 'choose two target creatures become black until end of turn. untap that creature. until end of turn, it gets +&^/+& and gains first strike until end of turn.')], 'name': [(0, 'flame with of mortio')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{^GG}'), (10, 'target creature gets +&^^^/+& and gains haste until end of turn.')], 'subtypes': [(4, ['sorcery'])], 'supertypes': [(1, ['in'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c644d758>)], 'name': [(0, 'shifting stonm')]}
{'name': [(0, 'flame fusillad')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c63ffe18>)], 'other': [(9, "sacrifice a creature rather than pay @'s mana cost.\\creatures you control get +&^/+&^ until end of turn.")], 'subtypes': [(4, ['ancant'])], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c619e638>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, "ambition's comm")], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c619edd0>)], 'supertypes': [(1, ['instant'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^^}.\\draw a card.')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^^} plus an additional {^^} for each card named @ in each graveyard.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c60bb200>)], 'name': [(0, 'proupe')], 'types': [(2, ['sorce'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c60e2320>)], 'name': [(0, 'metamorphose')], 'text': [(8, <manalib.Manatext instance at 0x7f16c60e2440>)], 'rarity': [(5, 'N')], 'other': [(9, '\\destroy target nonblack creature that entered the battlefield since your last turn ended.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c606f098>)], 'rarity': [(5, 'N')], 'other': [(10, '{BBBB^}'), (11, 'destroy target creature if it has the least power and toughness onto the battlefield.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c5eeb7e8>)], 'name': [(0, 'arm discovery')], 'text': [(8, <manalib.Manatext instance at 0x7f16c5eeb908>)], 'rarity': [(5, 'O')], 'other': [(9, "look at the top three cards of your library, then put them back in any order. you may choose new targets four combat. you gain life equal to that creature's power plus its toughness.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^^UUUU^}'), (10, 'uncast target spell.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5c316c8>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c5b744d0>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{^^RR}'), (10, '@ deals &^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets -&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^}.\\lus an &^ life.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5a827a0>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c58300e0>)], 'other': [(10, '{UU}'), (11, 'look at the top three cards of target player\'s library, then put them back in any order. = return target nonland permanent to its owner\'s hand." then put the rest of the revealed cards into your library.')], 'name': [(0, 'false defeat')], 'types': [(2, ['sorcreat'])], 'rarity': [(5, 'orcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5722830>)], 'other': [(9, 'destroy all nonbasic lands. for each land destroyed this way, its controller may search his or her library for a land card and put it onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'strup to of the hor')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c50ed560>)], 'other': [(9, 'uncast target spell unless its controller pays {^} for each blue permanent you control.')], 'name': [(0, "predator's rupporo")], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c50735a8>)], 'rarity': [(5, 'N')], 'other': [(9, 'destroy X target nonblack creatures. @ deals X plus &^^^ damage to you, where X is the number of colors of mana spent to cast @.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c4ffc200>)], 'other': [(9, 'search your library for up to three basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. then shuffle your library.')], 'name': [(0, "all sun's throos")], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c4fc8638>)], 'name': [(0, 'reality shift')], 'text': [(8, <manalib.Manatext instance at 0x7f16c4fc8758>)], 'rarity': [(5, 'N')], 'other': [(9, '\\cast @ ontom bl creature cards with the same name as that creature get -&^^^/-&^^^ until end of turn.')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c4caae60>)], 'other': [(9, 'put two &^/&^ green saproling creature tokens onto the battlefield under your control.')], 'name': [(0, 'sanity grinding sear')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
====================
reimannsum, I can't be of much help at the moment (I'm swamped with work), but if the problem persists I can take a look at it over the weekend.
---
By the way, the big machine is back up and running, and I had an opportunity to run some style transfer stuff just for fun last night. I've done a lot of examples of style transfers that give art a painterly quality. I wanted to try something completely different this time, something with sharp, raw edges. So I said "why not pixel art?". So I took a work of pixel art that I found here (credit goes to tinystuffz on deviantart), and applied it to Beguiler of Wills.
I found out that the network does a pretty good job with creating pixel art from style references. Because it tries to retain the content of the original image, it can keep the focus on the important parts while simplifying the extraneous details.
We can compare this pseudo-pixelation to an effect generated by photoshop. I've attached a version of the original image that I've passed through a mosaic filter that gives the work a similar blocky texture. The photoshop effect is applied in a uniform way, which means that essential and inessential elements get meshed together. I've attached zoomed-in crop of the hair of the Beguiler with color removed, with the photoshop version on the left and the style transfer version on the right. Using uniform pixelation, it is difficult to tell what parts are the hair and what parts are the background, but with pseudo-pixelation, the distinction is still clear.
I'll have to toy with this idea some more when I get the opportunity. I think I could get some very cool results with it.
EDIT: I uploaded the original work by Deschamps so that you could see the differences more clearly.
I wanted to try something completely different this time, something with sharp, raw edges. So I said "why not pixel art?". So I took a work of pixel art that I found here (credit goes to tinystuffz on deviantart), and applied it to Beguiler of Wills.
It's funny that you decided to go with pixel art - I've been meaning to ask you to try it, but kept forgetting. I'm a big pixel art fan and have done a lot of it myself. I've got a blog where I post the stuff (and other things, including some of the NN generated stuff from this thread).
I found out that the network does a pretty good job with creating pixel art from style references. Because it tries to retain the content of the original image, it can keep the focus on the important parts while simplifying the extraneous details.
It does indeed a great job, simplifying the details, properly adding aliasing to angled lines, mostly keeping flat color fields etc. The only issues are the use of gradients creating soft color transitions in some places and some lines are somewhat interpolated. You probably could try to get rid of both issues by training it further with sources that use dithering to create color transitions.
If you're experimenting with pixel art, I'd recommend Fool's work. He's got some incredible pieces in the gallery. (I linked Dragon Rider earlier when showing off waifu2x).
If you want game graphics that have a permissive 'use for whatever' license, open game art is a pretty great resource. They've got tags, so it might be possible to give the NN some slack in self-selecting combinations.
I'm still having issues with the Alienware and installing torch, I'll try reinstalling Linux today of tomorrow if this persists. I'm going to try dual booting on my desktop, with a GX970, to see if my problem is with not installing cuda support correctly.
I've also been working on several cron jobs because if I want to run several of these computers at the same time I want to have one place to have one place where the dumps go and where I can generate a new input text to train them on next. Enter computer #4: my Rasberry Pi 2 B+. I plan on having it work as a samba drive that I can run python on ans ssh into so that my dumps can spit to here and keep working so I can play with the data without stopping training.
I wrote a script that will go through each of the folder in the CV directory and, for each checkpoint, if I don't have an output file made, and the training or sampling script isn't in memory, make a dump file for it. Once I figure out bash syntax for how to get it to work right I'll properly comment it and probably start my own google drive share with that file and my dumps thus far.
I then wrote a script, that will cron from the Pi, that will check the samba folder and if there isn't a summary and a cards file(decoded dump) for each output, it will generate them. Here is the git, if you want to look at them and try to help fix them, please feel free. https://github.com/reimannsum/mtg-rnn-crons
with the slow computer I am using an input file created by using the encode -e rmana >>input 5 times to ensure that each copy of the card had a different randomized mana cost. EDIT: Every time I continue reading the thread trying to catch up I remember that I should start using dropout, but I keep forgetting every time I set a new NN to train, Ill get there eventually, and it will probably make my results better.
Still feeding just instant and sorcery cards as I can only make a 128 x 3 network. After 24 epochs my training loss was lower than my grad/pram loss so I stopped it and generated several 10m dumps for the last two checkpoints.
My question for anyone else who has trained a network just for instants and sorceries: have you run your dumps through the summerize.py? have you found that it has a limited number of potential names? I will upload my summaries and dumps as soon as they are done as demonstration.
Opening encoded card file: cards/rmana_5/e21.84-t0.5/output.txt
====================
68001 valid cards, 167 invalid cards.
68168 cards parsed, 680 failed to parse
--------------------
21973 unique card names
--------------------
6 represented colors (including colorless as 'A'), 24 combinations
Breakdown by color:
A B G R U W
321 10608 7639 20629 13046 16664
Breakdown by number of colors:
0 1 2 3
321 67145 665 37
--------------------
164 unique card types, 115 combinations
Breakdown by type:
instant sorcery tribal sorcer irstant insttant instantt irstiry inst the
44739 23075 426 81 43 11 11 11 8 6
--------------------
218 unique subtypes, 136 combinations
-- Popular subtypes: --
arcane 2769
trap 254
rogue 130
shapeshifter 62
wizard 40
goblin 36
elf 19
treefolk 18
traee 17
traan 11
-- Top combinations: --
arcane 2769
trap 254
rogue 130
shapeshifter 62
wizard 40
goblin 36
elf 19
treefolk 18
traee 17
traan 11
--------------------
1 unique supertypes, 1 combinations
Breakdown by supertype:
ins
1
--------------------
18 different CMCs, 950 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
97 8934 17280 15738 13874 6667 2529 1209 1066 507 168 65 13 9 4 4 2 2
-- Popular mana costs: --
{1}{W} 4477
{1}{R} 3065
{2}{R} 2866
{3}{R} 2676
{W} 2607
{1}{W} 1939
{R} 1542
{U} 1483
{3}{W} 1458
{1}{U} 1457
--------------------
21 unique p/t combinations
Largest power: 100, largest toughness: 181
-- Popular p/t values: --
{ 21
s{ 1
trapesswfrriercare creature you control dealt damage this turn, it deals that much damage to target creature or player. 1
trapensest.\look at the top three black cards of your library. you may put a creature card from among them gains haste until end of turn. 1
treeawer's wife, than pay {^^} more to cards 2 life. if that dimag, then draws that many cards.\distribt secast the number of attacking creatures. they can't be regenerated. 1
creatures you control get +2/+1 until end of turn. 1
trapensest.\the clam~ hour green creature card with converted mana cost 4 or less from a green stick creatures that player controls. that creature doesn't untap during its controller's next untap step.\draw a card. 1
target creature gets +4/+4 until end of turn. if it's a spirit, it gains stanking it. 1
O 1
s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness 1/1. 1
--------------------
Loyalty values:
O 2
tribe 1
anttancalafNO 1
N 1
--------------------
Card text ranges from 0 to 995 characters in length
Card text ranges from 0 to 5 lines
-- Line counts by frequency: --
1 49876
2 17438
3 715
0 100
4 36
5 3
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 18 68168
by_power 7 7
by_loyalty 4 5
by_textlen 422 68168
by_cost 950 68168
by_supertype 1 1
by_color_inclusive 6 68907
by_name 21973 68167
by_pt 21 41
by_supertype_inclusive 1 1
by_subtype_inclusive 218 3699
by_toughness 7 7
by_type 115 68115
by_textlines 6 68168
by_type_inclusive 164 68619
by_color 24 68168
by_color_count 4 68168
by_subtype 136 3570
********************
Shortest Cardname: (3)
war
Longest Cardname: (235)
gilt with the tatatedes exhet outtall amounter the top card of the chosen type from an astifact creature or player, then puts the land cards into your graveyard. then shuffle your library and put that card onto the battlefield instead.
-- Most duplicated names: --
revive 812
soul rend 567
surge of rage 520
into the roil 500
searing blaze 462
rend strike 425
return to dust 415
mind retribution 366
restore 336
torrent of souls 281
--------------------
Longest card type: (115)
sorcer's end nonland card revealed this way into your hand and the rest on the bottom of your library in any order.
Longest subtype: (188)
greee players all combat becomes the counters dand this turn's next enter the battlefield under your control this turn, and put them onto the battlefield tapped. then shuffle your library.
Longest supertype: (3)
ins
--------------------
Longest mana cost: (20)
{16}{U}
|surging growth||instant|||O||{^^^UU^^^^^^^^^^^^^}|each cleat red instant or sorcery card from your graveyard.\draw a card at the beginning of the next turn's upkeep.|
Largest cmc: (17)
{16}{U}
|surging growth||instant|||O||{^^^UU^^^^^^^^^^^^^}|each cleat red instant or sorcery card from your graveyard.\draw a card at the beginning of the next turn's upkeep.|
--------------------
Largest creature power: s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness 1
|scattering strak||instant||tral||s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness &^/&^.|||
Largest creature toughness: +0 and gains first strike anith that player's graveyard, hand, and library for all cards with the same name as that card and exile them. then that player shuffles his or her library.
|stand together the tamorm||instant||NN|{GG}|target creature gets +&^/+& and gains first strike anith that player's graveyard, hand, and library for all cards with the same name as that card and exile them. then that player shuffles his or her library.|||
--------------------
Most lines of text in a card: 5
|harsh sustenance||instant|||O||{WW}|reveal any number of green cards in your hand. draw a card for each card discarded this way.\cycling {BBBB^^^^} \when you cycle @, you may pay {^RR} and/or {^GG} any number of times.\destroy target artifact or land.\that player discards a card.|
Most chars in a card text: 995
|panic revoldes||sorcery|||N||{^RR}|strive ~ @ costs {^^GG} more to cast for each target beyond the first.\choose any number of target creatures. put the top three cards of your library into your graveyard.\suspend &^^^~{^RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR[...]--------------------
There were 167 invalid cards.
Opening encoded card file: cards/rmana_5/e24.27-t0.5/output.txt
====================
77946 valid cards, 201 invalid cards.
78147 cards parsed, 581 failed to parse
--------------------
18315 unique card names
--------------------
6 represented colors (including colorless as 'A'), 24 combinations
Breakdown by color:
A B G R U W
258 14112 18326 14530 21146 10852
Breakdown by number of colors:
0 1 2 3
258 76862 977 50
--------------------
129 unique card types, 121 combinations
Breakdown by type:
instant sorcery tribal inssant irstant sirshr inssans sorcer sorcey sorcers
43062 34744 338 63 35 14 10 10 8 7
--------------------
273 unique subtypes, 131 combinations
-- Popular subtypes: --
arcane 1567
trap 225
shapeshifter 120
rogue 27
Nilafe 17
Nire 17
goblin 14
the 13
of 12
giant 8
-- Top combinations: --
arcane 1567
trap 225
shapeshifter 120
rogue 27
Nilafe 17
Nire 17
goblin 14
giant 8
roguat 7
elfiike 6
--------------------
9 unique supertypes, 7 combinations
Breakdown by supertype:
s instant this sorcery ander inst ind insto instins
5 1 1 1 1 1 1 1 1
--------------------
16 different CMCs, 945 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 21
137 20225 18200 14863 11918 6838 3299 1090 1116 322 105 21 7 3 2 1
-- Popular mana costs: --
{U} 6861
{G} 6124
{1}{U} 5072
{R} 2864
{W} 1975
{2}{B} 1779
{2}{G} 1729
{1}{G} 1706
{2}{U} 1701
{1}{R} 1532
--------------------
33 unique p/t combinations
Largest power: 87, largest toughness: 95
-- Popular p/t values: --
{ 25
destroy target nonblack creature. its controller loses 2 life. 2
exile the top card of your library. until end of turn, you may play the cards in his or her hand, then draws cards equal to the number of cards in that player's hand.\fuse 1
target creature gets -3/-3 until end of turn. 1
ssarature ant omine, af equriked amount of dealt to you and permanents you control this turn. 1
inst{ 1
target player discards a card.\flashback {^^^^^^^BB} 1
choose two target creatures controlled by the same player. they can't be regenerated. 1
put two 1/1 white spirit creature tokens with flying onto the battlefield. then each player draws a card. 1
NA 1
--------------------
Loyalty values:
Aerefirel 33
Aerefire 14
NA 6
O 5
Aerekenerweed, this creatures, entwinement card until end of turn. they gain haste until end of turn, whenever the creature that shares a color with it. 1
trieg 1
Aerekenesweedbent, each opponent sacrifices a creature. 1
sorcery 1
Aerekenesweees each 7 damage to each creature without flying and each player. 1
N 1
--------------------
Card text ranges from 0 to 545 characters in length
Card text ranges from 0 to 4 lines
-- Line counts by frequency: --
1 59067
2 17979
3 925
0 140
4 36
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 16 78147
by_power 7 7
by_loyalty 17 71
by_textlen 373 78147
by_cost 945 78147
by_supertype 7 11
by_color_inclusive 6 79224
by_name 18315 78146
by_pt 33 58
by_supertype_inclusive 9 13
by_subtype_inclusive 273 2417
by_toughness 7 7
by_type 121 78115
by_textlines 5 78147
by_type_inclusive 129 78467
by_color 24 78147
by_color_count 4 78147
by_subtype 131 2166
********************
Shortest Cardname: (3)
ose
Longest Cardname: (212)
gift of the nother's the deaththazess with that card. its controller may search his or her library for a dragon creature token onto the battlefield. they have "sacrifice this creature: add {^} to your mana pool."
-- Most duplicated names: --
second sunrise 949
simple 898
return to the earth 742
desertion 689
defy death 532
resounding silence 497
spiritualize 481
death frenzy 476
disembowel 460
time stretchors 444
--------------------
Longest card type: (35)
trigets and gain swralced creature.
Longest subtype: (263)
roggeqomafeout pits control of target creature and all other creatures with the same name if an additional {^^GG} you paid, destroy another target artifact. for each of them, put a token that's a copy of that creature onto the battlefield.\flashback {^BB^^^^BB^^}
Longest supertype: (16)
insto this ander
--------------------
Longest mana cost: (25)
{19}{B}{B}
|bathe in dragon||sorcery|||A||{^^^^^BB^^^^^^^^^^^^^^BB}|return up to three target creature cards from your graveyard to your hand.|
Largest cmc: (21)
{19}{B}{B}
|bathe in dragon||sorcery|||A||{^^^^^BB^^^^^^^^^^^^^^BB}|return up to three target creature cards from your graveyard to your hand.|
--------------------
Largest creature power: {^^RR^^^}lark creatures gain first strike until end of turn. = target creature gets +2
|death frenzy||tribal sorcery|Aerefirel|Nilanes||{^^RR^^^}lark creatures gain first strike until end of turn. = target creature gets +&^^/+& and gains first strike until end of turn.|||
Largest creature toughness: 1 white spirit creature tokens with flying onto the battlefield. then each player draws a card.
|death frenzy||tribal screy||rorerOA|{WW^^}|put two &^/&^ white spirit creature tokens with flying onto the battlefield. then each player draws a card.|||
--------------------
Most lines of text in a card: 4
|decollenter soul||instant|||O||{^^GG}|devoid \draw a card.\suspend &^^~{^^BBBB} \each opponent loses the secreatuce three sacrifices a permanent.|
Most chars in a card text: 545
|flash conscroousue||instant|||O||{GG}|target creature gets +&^^/+& and damage to youg attacking or forest, you gryer that permanents controlled by the player target creature you control. if @ was kickaids from their graveyard, instead that player reveals his or her hand and discards all creature cards of that type. then destroy all cards from his or her hand namang the fewealt combat damage this turn. if damage is prevented this way, @ deals that much damage to that creature. if death gets more votes or the vote is tied, copy the spell. you may choose new targets for the copy.|
--------------------
There were 201 invalid cards.
I'm still having issues with the Alienware and installing torch, I'll try reinstalling Linux today of tomorrow if this persists. I'm going to try dual booting on my desktop, with a GX970, to see if my problem is with not installing cuda support correctly.
Gotcha. I think the minimum version of CUDA needed by Torch is 5.5, and your GX970 GPU should be able to support that (as far as I know).
Incidentally, I also have an older Alienware (desktop) machine on which I tried to install Torch. I ran into a problem with some out-of-date GPUs; they have CUDA support but only up to like version 3 or 4, which is inadequate. Of course, seeing the "Specify CUDA_TOOLKIT_ROOT_DIR" in that last post of yours makes me think you're running into some kind of configuration issue where environment variables aren't getting set correctly, but I could be mistaken.
I've also been working on several cron jobs because if I want to run several of these computers at the same time I want to have one place to have one place where the dumps go and where I can generate a new input text to train them on next. Enter computer #4: my Rasberry Pi 2 B+. I plan on having it work as a samba drive that I can run python on ans ssh into so that my dumps can spit to here and keep working so I can play with the data without stopping training.
with the slow computer I am using an input file created by using the encode -e rmana >>input 5 times to ensure that each copy of the card had a different randomized mana cost. EDIT: Every time I continue reading the thread trying to catch up I remember that I should start using dropout, but I keep forgetting every time I set a new NN to train, Ill get there eventually, and it will probably make my results better.
I'll warn you that frequent repetition of the same cards is a recipe for overfitting. On a related note, yes, dropout is your friend.
My question for anyone else who has trained a network just for instants and sorceries: have you run your dumps through the summerize.py? have you found that it has a limited number of potential names? I will upload my summaries and dumps as soon as they are done as demonstration.
That would be evidence of overfitting on the names. Neural networks will do everything in their power to avoid learning and thinking; they are very lazy creatures. With a very small input size combined with repetitions and no dropout, you might be encouraging it to just memorize names rather than learn a scheme for generating new ones.
with the slow computer I am using an input file created by using the encode -e rmana >>input 5 times to ensure that each copy of the card had a different randomized mana cost. EDIT: Every time I continue reading the thread trying to catch up I remember that I should start using dropout, but I keep forgetting every time I set a new NN to train, Ill get there eventually, and it will probably make my results better.
I'll warn you that frequent repetition of the same cards is a recipe for overfitting. On a related note, yes, dropout is your friend.
I hear tell of Hardcast duplicating the corpus 10 or 100 times and his Checkpoints seem to come out just fine. I just wanted to make sure that the randomized mana symbols weren't all the same pattern if I used the -d command on the encode.py. I couldn't tell if they were so I hacked my own solution.
Also it is expected that running a dropout of 0.2 would increase my time per batch by ~5-10%? I was getting a pretty consistent 2.64s/batch before dropout and now I'm getting a pretty consistent 2.75s/batch.
My question for anyone else who has trained a network just for instants and sorceries: have you run your dumps through the summerize.py? have you found that it has a limited number of potential names? I will upload my summaries and dumps as soon as they are done as demonstration.
That would be evidence of overfitting on the names. Neural networks will do everything in their power to avoid learning and thinking; they are very lazy creatures. With a very small input size combined with repetitions and no dropout, you might be encouraging it to just memorize names rather than learn a scheme for generating new ones.
I mean the names are still rather unique, but as my logs show I get between 15-20% of cards uniquely named.
---------------------------------------------
EDIT: as I was reading through the thread, I had a thought while you guys were talking about building the first set: if things like Rebound and Flashback are too powerful, why not try to do the same thing you did with the Equip cost? move it to the top of the text body on the training set?
First of all, I'm kinda sorta back to active development at the moment. I'm taking a machine learning class this semester, and now that I survived implementing gradient descent for the Lasso in the first homework, I'm trying to find a way to work this into a class project.
with the slow computer I am using an input file created by using the encode -e rmana >>input 5 times to ensure that each copy of the card had a different randomized mana cost. EDIT: Every time I continue reading the thread trying to catch up I remember that I should start using dropout, but I keep forgetting every time I set a new NN to train, Ill get there eventually, and it will probably make my results better.
I'll warn you that frequent repetition of the same cards is a recipe for overfitting. On a related note, yes, dropout is your friend.
I hear tell of Hardcast duplicating the corpus 10 or 100 times and his Checkpoints seem to come out just fine. I just wanted to make sure that the randomized mana symbols weren't all the same pattern if I used the -d command on the encode.py. I couldn't tell if they were so I hacked my own solution.
Duplicating cards in the input isn't a great idea, because the input file is the wrong place to duplicate the cards. What you really want to do is rerandomize the things that should be random for each training epoch, and possibly again each time you run the validation numbers, though that's a lot less important and of debatable value anyway.
Fortunately, the custom batcher for mtg-rnn does exactly this for you. In fact, if you give it the --randomize-mana option, it will randomize the order of the mana symbols in each cost used for training, so every single one will be unique and different from the same cost in other epochs, even if you didn't randomize the input file at all. You can go comb through the readmes if you want more detail on exactly how it works and what the rationale is.
Anyway, I should update things. The big items on my list are to regenerate the training data with the new BFZ cards (though I assume plenty of others have already done that) and see if there's any new updates from karpathy that I need to integrate into mtg-rnn. I have some work already done on a new version of the format that's probably better, but I don't want to push that out too quickly and break code people are using.
Also it is expected that running a dropout of 0.2 would increase my time per batch by ~5-10%? I was getting a pretty consistent 2.64s/batch before dropout and now I'm getting a pretty consistent 2.75s/batch.
The dropout constitutes an extra layer of computation, to randomly decide which inputs to let through and which to silence, that sort of thing. So yes, I would expect your execution time per batch to go up by some small amount.
EDIT: as I was reading through the thread, I had a thought while you guys were talking about building the first set: if things like Rebound and Flashback are too powerful, why not try to do the same thing you did with the Equip cost? move it to the top of the text body on the training set?
Actually, that's a smart idea, I like it. We should try that.
---
Just an FYI, I promise I'll make some time this weekend to look into packaging up the data-structure augmented network and sampling script so that y'all can have fun with it.
Oh, and I've been having some fun with video game art styles and Magic, and it leads me to speculate on the Magic games that never were. I attached two results that humored me.
First of all, I'm kinda sorta back to active development at the moment.
[...]
Anyway, I should update things. The big items on my list are to regenerate the training data with the new BFZ cards (though I assume plenty of others have already done that) and see if there's any new updates from karpathy that I need to integrate into mtg-rnn. I have some work already done on a new version of the format that's probably better, but I don't want to push that out too quickly and break code people are using.
glad to hear it! I have a question: so I put your code on my RPi and the sorting script isn't working I get this:
pi@raspberrypi /mtgencode $ ./sortcards.py -h
./sortcards.py: line 1: import: command not found
./sortcards.py: line 2: import: command not found
./sortcards.py: line 3: import: command not found
from: can't read /var/mail/collections
./sortcards.py: line 8: syntax error near unexpected token `('
./sortcards.py: line 8: `def sortcards(cards):'
Here is the python -v info:
pi@raspberrypi /mtgencode $ python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/lib/python2.7/site.pyc matches /usr/lib/python2.7/site.py
import site # precompiled from /usr/lib/python2.7/site.pyc
# /usr/lib/python2.7/os.pyc matches /usr/lib/python2.7/os.py
import os # precompiled from /usr/lib/python2.7/os.pyc
import errno # builtin
import posix # builtin
# /usr/lib/python2.7/posixpath.pyc matches /usr/lib/python2.7/posixpath.py
import posixpath # precompiled from /usr/lib/python2.7/posixpath.pyc
# /usr/lib/python2.7/stat.pyc matches /usr/lib/python2.7/stat.py
import stat # precompiled from /usr/lib/python2.7/stat.pyc
# /usr/lib/python2.7/genericpath.pyc matches /usr/lib/python2.7/genericpath.py
import genericpath # precompiled from /usr/lib/python2.7/genericpath.pyc
# /usr/lib/python2.7/warnings.pyc matches /usr/lib/python2.7/warnings.py
import warnings # precompiled from /usr/lib/python2.7/warnings.pyc
# /usr/lib/python2.7/linecache.pyc matches /usr/lib/python2.7/linecache.py
import linecache # precompiled from /usr/lib/python2.7/linecache.pyc
# /usr/lib/python2.7/types.pyc matches /usr/lib/python2.7/types.py
import types # precompiled from /usr/lib/python2.7/types.pyc
# /usr/lib/python2.7/UserDict.pyc matches /usr/lib/python2.7/UserDict.py
import UserDict # precompiled from /usr/lib/python2.7/UserDict.pyc
# /usr/lib/python2.7/_abcoll.pyc matches /usr/lib/python2.7/_abcoll.py
import _abcoll # precompiled from /usr/lib/python2.7/_abcoll.pyc
# /usr/lib/python2.7/abc.pyc matches /usr/lib/python2.7/abc.py
import abc # precompiled from /usr/lib/python2.7/abc.pyc
# /usr/lib/python2.7/_weakrefset.pyc matches /usr/lib/python2.7/_weakrefset.py
import _weakrefset # precompiled from /usr/lib/python2.7/_weakrefset.pyc
import _weakref # builtin
# /usr/lib/python2.7/copy_reg.pyc matches /usr/lib/python2.7/copy_reg.py
import copy_reg # precompiled from /usr/lib/python2.7/copy_reg.pyc
# /usr/lib/python2.7/traceback.pyc matches /usr/lib/python2.7/traceback.py
import traceback # precompiled from /usr/lib/python2.7/traceback.pyc
# /usr/lib/python2.7/sysconfig.pyc matches /usr/lib/python2.7/sysconfig.py
import sysconfig # precompiled from /usr/lib/python2.7/sysconfig.pyc
# /usr/lib/python2.7/re.pyc matches /usr/lib/python2.7/re.py
import re # precompiled from /usr/lib/python2.7/re.pyc
# /usr/lib/python2.7/sre_compile.pyc matches /usr/lib/python2.7/sre_compile.py
import sre_compile # precompiled from /usr/lib/python2.7/sre_compile.pyc
import _sre # builtin
# /usr/lib/python2.7/sre_parse.pyc matches /usr/lib/python2.7/sre_parse.py
import sre_parse # precompiled from /usr/lib/python2.7/sre_parse.pyc
# /usr/lib/python2.7/sre_constants.pyc matches /usr/lib/python2.7/sre_constants.py
import sre_constants # precompiled from /usr/lib/python2.7/sre_constants.pyc
import _locale # builtin
# /usr/lib/python2.7/_sysconfigdata.pyc matches /usr/lib/python2.7/_sysconfigdata.py
import _sysconfigdata # precompiled from /usr/lib/python2.7/_sysconfigdata.pyc
# /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.pyc matches /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.py
import _sysconfigdata_nd # precompiled from /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.pyc
# /usr/lib/python2.7/sitecustomize.pyc matches /usr/lib/python2.7/sitecustomize.py
import sitecustomize # precompiled from /usr/lib/python2.7/sitecustomize.pyc
import encodings # directory /usr/lib/python2.7/encodings
# /usr/lib/python2.7/encodings/__init__.pyc matches /usr/lib/python2.7/encodings/__init__.py
import encodings # precompiled from /usr/lib/python2.7/encodings/__init__.pyc
# /usr/lib/python2.7/codecs.pyc matches /usr/lib/python2.7/codecs.py
import codecs # precompiled from /usr/lib/python2.7/codecs.pyc
import _codecs # builtin
# /usr/lib/python2.7/encodings/aliases.pyc matches /usr/lib/python2.7/encodings/aliases.py
import encodings.aliases # precompiled from /usr/lib/python2.7/encodings/aliases.pyc
# /usr/lib/python2.7/encodings/utf_8.pyc matches /usr/lib/python2.7/encodings/utf_8.py
import encodings.utf_8 # precompiled from /usr/lib/python2.7/encodings/utf_8.pyc
Python 2.7.9 (default, Mar 8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
dlopen("/usr/lib/python2.7/lib-dynload/readline.arm-linux-gnueabihf.so", 2);
import readline # dynamically loaded from /usr/lib/python2.7/lib-dynload/readline.arm-linux-gnueabihf.so
any thoughts on how to solve this? is it just not compatible with RPi python?
@Talcos: no worries about my weird torch problem, I nuked the Aleinware and reinstalled and it worked like a charm. I then remembered that I had installed CUDA drivers from NVidea trying to foresee problems installing and apparently caused them instead. lol
The terminology 'uncasted' is actually my doing. If you turn both 'counter' and 'countered' into the same word 'uncast', then there are some situations where it's hard to figure out which one was which if you want to go back to normal magic-english terminology. So I just did the thing that was more technically sound, even if it makes for silly English.
The terminology 'uncasted' is actually my doing. If you turn both 'counter' and 'countered' into the same word 'uncast', then there are some situations where it's hard to figure out which one was which if you want to go back to normal magic-english terminology. So I just did the thing that was more technically sound, even if it makes for silly English.
@ talcos DANG spoke too soon, just tried to train and was reading through the intro text as it preps the network and
package cunn not found!
package cutorch not found!
If cutorch and cunn are installed, your CUDA toolkit may be improperly configured.
Check your CUDA toolkit installation, rebuild cutorch and cunn, and try again.
Falling back on CPU mode
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Torch7 in /home/burke/torch/install
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "/tmp/luarocks_cutorch-scm-1-200/cutorch/build/CMakeFiles/CMakeOutput.log".
Error: Build error: Failed building.
what is this CUDA toolkit and where can I get one?
EDIT:
after brief but intensive googling I see that the 540m only supports CUDA 2.1 drat, well at least the CPU is faster and it has more memory so I can run bigger networks on it for days at a time.
also: does anyone knwo why when my spells NN reaches batch 1000 my validation lass spices to the e0 range? like grad/param norm = 7.2962e-2 on batch 999 but grad/param norm = 7.8258e-0 batch 1000
what happened when I saved the check point?
EDIT(2): With the -print_every flag should I be at all worried that my grad/param norm is x10 larger on that training session when it is set to -print_every 10? or is that just the loss per batch added together for that number? (I know I seem to have a lot of questions and I blame it on me being unable to stick to training only 1 NN)
glad to hear it! I have a question: so I put your code on my RPi and the sorting script isn't working I get this:
pi@raspberrypi /mtgencode $ ./sortcards.py -h
./sortcards.py: line 1: import: command not found
./sortcards.py: line 2: import: command not found
./sortcards.py: line 3: import: command not found
from: can't read /var/mail/collections
./sortcards.py: line 8: syntax error near unexpected token `('
./sortcards.py: line 8: `def sortcards(cards):'
Your output makes it look like python doesn't know what an import statement is... interesting.
Have you tried running anything else? sorcards.py is out of date, probably doesn't work with modern formats, and really needs to be replaced with something better under scripts/, so it's maybe not the best test case.
so I added the #!/usr/bin/env python to the beginning of the sortcards.py and it worked...
well ./sortcards.py -h still broke but that is because -h is not a file lol
well the 1000 batch limit isn't present using the -randomize_mana flag with standard encoding. I finished my spells training on the standard 50 epochs, I'll see what the dumps look like, later tonight.
Hello all! I wanted to let you know that I cleaned up the code for sampling from the data-structure-augmented networks. I've attached a checkpoint of the low-dropout/prone-to-overfitting network and a checkpoint of the moderate-dropout/less-prone-to-overfitting network. The low-dropout network uses two stacks, the moderate-dropout network uses three stacks (they both have four stacks, but they opt not to use all of them).
I tested the code on two different machines to make sure everything works, but do let me know if you run into any issues. By the way, you will need CUDA support to sample from these checkpoints.
The sampling script works just as it usually does. As always, remember that picking the right temperature is critical to success. Let's look at exemplary outputs we get as we vary the temperature when sampling on moderate_dropout.t7:
0.1: |stone spirit||creature||spirit|N|&^^/&^^|{^^WW}|{WW}, T: tap target creature.|
0.5: |chain of the fells||sorcery|||A||{BBBB^^^^}|exile all cards from target player's library. put two of those cards into your hand, then shuffle your library.|
1: |chromatic hyprogist||creature||human spellshaper|N|&^/&^|{GG}|{GG^}, T, discard a card: target creature gets -&^^/-&^^ until end of turn.|
1.5: |odopishvabrimer||creature||elf mutant|A|&^^^^/&^^|{^GG^}|you may choose not to untap @ during your untap step.\{^^}, T: target spell becomes hand and each player face down and you lose &^^ life.\when @ leaves the battlefield, sacrifice @. if you do, destroy target green creature an opponent controls.|
2.0: |momenna& ure||sorcery||arcane|O||{WW}|you gain a plucning counter on @, untap up to one target creature and all {BB^}kell gate if you control no opponents has : reach the % counters. soulchiftce you cast a noncreature spell, &^^^^/vouck {RR^}.|
3.0: |fnoi acn polingy||hangel gute/un|{rand^^ he or she: creatures fightstamot, buttki&^ &^ and ang blackd lughed, white eqhal ceatsamod."\at the beginning of your Tres: }|reveal the nits damage can't we e red, othor creatures your opponents control bvocves, when & greve kmy out ulting until taspd^n:,|Yinstant artifact||graveyard\firothu taple^ on|& .n~'s monaB is"pai ool, its controller puts X &^/&^ game nsteWs on haswn to a player's ghaveyard, @ has base power &^^ pluvint only enchant of {.jarriyoss enchanted spell's co oto the urnzeals.|
|robo~rosewater, the blade servant|legendary|artifact creature||construct|A|&^^^/&^^^|{^^^^}|when @ dies, you may search your library for a basic land card with converted mana cost &^^^ or less, reveal it, and put it into your hand. if you do, shuffle your library.|
|robo~rosewater, the master of treefolk|legendary|artifact creature||construct|A|&^/&^^^^^|{^^^^^}|{^^}: untap target artifact creature.|
|robo~rosewater, the blood termise|legendary|artifact creature||construct|A|&^^^^^/&^^^^^|{^^^^^}|defender\@ can block an additional creature.|
|robo~rosewater, the martyr|legendary|artifact creature||construct|A|&^^^^/&^^^^|{^^^^^}|{^^^}: regenerate target black or red permanent.|
Also, because I endeavor to make all of my posts a feast for the senses, I've attached versions of Comic Book Vraska for your viewing pleasure.
Opening encoded card file: cards/spells/e50-t0.5/output.txt
====================
83996 valid cards, 97 invalid cards.
84093 cards parsed, 10 failed to parse
--------------------
59660 unique card names
--------------------
6 represented colors (including colorless as 'A'), 16 combinations
Breakdown by color:
A B G R U W
685 19745 12045 17844 20353 13736
Breakdown by number of colors:
0 1 2
685 83093 315
--------------------
3 unique card types, 4 combinations
Breakdown by type:
instant sorcery tribal
44250 39818 7
--------------------
8 unique subtypes, 8 combinations
-- Popular subtypes: --
trap 612
arcane 15
eldrazi 2
gibal 1
gepe 1
giant 1
shapeshifter 1
shape 1
-- Top combinations: --
trap 612
arcane 15
eldrazi 2
gibal 1
gepe 1
giant 1
shapeshifter 1
shape 1
--------------------
0 unique supertypes, 0 combinations
Breakdown by supertype:
--------------------
17 different CMCs, 1765 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
25 8384 12649 15637 13845 10901 8280 5993 3881 2275 1247 568 259 103 36 5 5
-- Popular mana costs: --
{U} 2983
{2}{U} 2306
{1}{U} 2251
{1}{W} 2006
{W} 1892
{2}{W} 1788
{2}{R} 1563
{R} 1466
{1}{R} 1403
{1}{U} 1400
--------------------
0 unique p/t combinations
-- Popular p/t values: --
--------------------
Loyalty values:
--------------------
Card text ranges from 0 to 370 characters in length
Card text ranges from 0 to 4 lines
-- Line counts by frequency: --
1 58467
2 25051
3 540
0 25
4 10
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 17 84093
by_power 0 0
by_loyalty 0 0
by_textlen 305 84093
by_cost 1765 84093
by_supertype 0 0
by_color_inclusive 6 84408
by_name 59660 84092
by_pt 0 0
by_supertype_inclusive 0 0
by_subtype_inclusive 8 634
by_toughness 0 0
by_type 4 84068
by_textlines 5 84093
by_type_inclusive 3 84075
by_color 16 84093
by_color_count 3 84093
by_subtype 8 634
********************
Shortest Cardname: (3)
out
Longest Cardname: (102)
shield search the starget steples a land and exile them. then that player shuffles his or her library.
-- Most duplicated names: --
shadowstorm 475
research 284
sudden strike 221
restriction 203
consume 165
restore 140
artifice 138
reality strike 135
shadowstone 134
sandstorm 132
--------------------
Longest card type: (14)
tribal sorcery
Longest subtype: (12)
shapeshifter
No cards indexed by supertype?
--------------------
Longest mana cost: (19)
{15}{W}
|firestorm||sorcery|||A||{^^^^^^^^^^^^^WW^^}|exile target creature you control. scry &^.|
Largest cmc: (16)
{16}
|instill||sorcery|||A||{^^^^^^^^^^^^^^^^}|exile all creatures of the creature type. you may have that player shuffle his or her library.\draw a card.|
--------------------
No cards indexed by power?
No cards indexed by toughness?
--------------------
Most lines of text in a card: 4
|promant of death||sorcery|||A||{^^^^^^^^^BB^^}|return target creature card from your graveyard to your hand.\threshold ~ if seven or more cards are in your graveyard, you may pay {WW} rather than pay @'s mana cost.\put two &^/&^ white spirit creature tokens with flying onto the battlefield.\flashback {^WW^^^^}|
Most chars in a card text: 370
|crush of hemory||sorcery|||A||{^^^RR^^^}|@ deals &^^^^^ damage to each creature. if you control a swamp, you may pay {BB} rather than pay @'s mana cost.\you may cast @ as though it had flash if you control a swamp, you may cast @ without paying its mana cost.\uncast target spell unless its controller pays {^}. = put two &^/&^ white spirit creature tokens with flying onto the battlefield.\flashback {^^^^^RR^}|
--------------------
There were 97 invalid cards.
{'rarity': [(0, '\x1b[mcreating an LSTM...\x1b[0m\t')]}
{'name': [(0, 'swift search of the wastes this creature deals damage equal to its power to target creature.')]}
{'name': [(0, 'boundless to the next of the green stike this creature."')]}
--------------------
There were 10 unparsed cards.
{'cost': [(7, <manalib.Manacost instance at 0x7fda6768c488>)], 'name': [(0, 'grim flames')], 'text': [(8, <manalib.Manatext instance at 0x7fda6768c5a8>)], 'rarity': [(5, 'A')], 'other': [(10, 'sorcery'), (13, 'A'), (15, '{^^^^^^^^^^UU^^^}'), (16, 'delve \\target creature gets +&^^/+&^^ until end of turn.\\draw a card.')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7fda62ba3f38>)], 'name': [(0, 'reverse the mand.')], 'pt': [(6, '{^^^^BB^^}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda5efdf170>)], 'name': [(0, 'share revelation')], 'text': [(8, <manalib.Manatext instance at 0x7fda5efdf290>)], 'rarity': [(5, 'O')], 'other': [(9, ' destroy all creatures of that chooce that player controls.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda5ba61248>)], 'name': [(0, 'chand of the sands')], 'text': [(8, <manalib.Manatext instance at 0x7fda5ba61368>)], 'rarity': [(5, 'A')], 'other': [(10, 'instant'), (13, 'O'), (15, '{RR^}'), (16, '@ deals &^^ damage to each creature without flying.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'strength of the next')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7fda4f740d88>)], 'supertypes': [(1, ['ingal', 'instanced'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'search your library for a card and exile them. then that player shuffles his or her library.')]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda4f56db90>)], 'name': [(0, 'touch of the hearth')], 'text': [(8, <manalib.Manatext instance at 0x7fda4f56dcb0>)], 'rarity': [(5, 'A')], 'other': [(9, ' destroy target land. if that spell is uncasted this way, exile it instead.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'tribute into the grave')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7fda4e60bf38>)], 'supertypes': [(1, ['stroke'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "choose a number. you may put a creature card from a graveyard to their owners' hands.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda4dc7aa70>)], 'name': [(0, 'shelenting head')], 'text': [(8, <manalib.Manatext instance at 0x7fda4dc7ab90>)], 'rarity': [(5, 'O')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'desperate into the grave')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7fda4da4ba28>)], 'supertypes': [(1, ['stroke'])], 'loyalty': [(3, 'instant')], 'other': [(9, "destroy target artifact. if you control a forest, you may pay {UU^} rather than pay @'s mana cost.\\creatures you control get +&^^/+&^^ until end of turn. if @ was kicked, you gain &^^^^^^^^ life.")]}
====================
as soon as I get the RPi integrated I'll start linking to all my dumps as I will have Grive on the RPi and will host all my dump files and maybe even some of my checkpoints.
PS: the sortcards.py thought all but 10 cards were colorless and without mana.
As a little side note, you can use a [code] tag inside the [spoiler] tag to put the text dumps in a monospace code font so the text tables retain their columns.
PS: the sortcards.py thought all but 10 cards were colorless and without mana.
Haha, working as intended. I'll have some real analytics scripts put up on the github at some point. And if you end up writing some code yourself, I'm happy to look at it add it to the currently almost empty set of tools in the scripts/ directory.
As to where to get a corpus... I dunno, can we get a dump of these forums to work with?
starting from scratch how many vanilla and french vanilla creatures did you generate to (pre-train was it) the NN @Talcos ? how many times did you train it on that sample set?
can french vanilla creatures that are duel colored be easily generated to help the NN understand that we are looking for more non-monos?
EDIT: also for the french vanilla creatures I think if we could make it a little more informative, so have defenders be tougher than powerful and striker be more powerful than tough, just a thought.
@hardcast_sixdrop can you encode the "AllSets.json" so the NN can see how frequent different types of things appear? like how often mana dorks are reprinted.
and what cards, can we have an exact summery, did you cut from the list (the Un-sets and so on)
I have so many thoughts all jumbling around at once, I started reading from page 1 yesterday. It has been so much to take in at once.
Have we, you guys really, com to a consensuses as to how the card data should be organized for the NN to process?
I'm all for encouraging experimentation, but I'll warn you that the juncture between Magic English and real English is incredibly small. There isn't a lot of reminder text to go on, and much of it is repeated across many cards.
But the idea itself has merit, this concept of bridging the gap between a formal language and an informal one. I like it, and there are ways one might go about it.
For example, neural translation is now a thing. We have two languages, and the network learns to go from one language to an learned representation of the meaning of the words and then finally to another language. It would be interesting to see whether you could decipher legalese in this way, for example.
Salut, reimannsum! Welcome. Sorry I did not reply to you sooner, but I got caught up in some work that lasted all through the evening.
When I did that (and for the most recent networks I'm not using scripted generation to expand the input corpus), I generated a few thousand such creatures and trained once. I was more or less padding the input with additional cards.
To preface an answer to your second question, what I've found is that the network makes some mistakes with the distributions of cards by color.
Take a look at this graph: https://plot.ly/~rmmilewi/836/creatures-by-color/
From one version of the network that I've sampled and studied deeply, I found that, relative to real card distributions, the networks generate too many monocolored cards and too few multicolored cards. It seems that the prediction policies learned by the networks favor monocolored cards (as in, when you ask it to consider a UW card, its predictions take into account its identity as a white card and as a blue card but not as a "white and blue" card). And even the color associations are tenuous at best. That's something we still have room to improve upon.
So more multicolored cards might force the network to seriously consider what makes Offering to Asha both white and blue. At the same time, it's also very difficult to hand-code a card generation process that will be adequate for the task. Honestly, if I had the time and resources and wanted to get more data, I'd scrape the single card creation thread here on this subforum. There's plenty of data to be had there (there are more cards there than there are actual cards in Magic), and there's a disproportionate number of multicolored cards.
Haha, you're fine. Take your time.
There's some wiggle room for modifications, but the standard encoding we use now is the one produced by this tool of ours.
----
Well, we had a network failure yesterday and now when I log back on to the big machine, I can't see the Nvidia toolkit, and without that I can't restart the virtual machine where I ran the data-structure augmented networks. Everything is backed up, don't worry, but I'll have to get everything back online before I can finish that task. That and I have a deadline coming up on Friday, so it might be just a bit. But I promise to make everything available soon, lol.
By the way, I recently saw a paper on using clique topology to reveal the structure of (biological) neural networks entitled "Clique topology reveals intrinsic geometric structure in neural correlations". It gives me some ideas for doing visualizations of their artificial counterparts, and I'll have to look more into that later.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
also HELP!! I left my RNN to run and IT CRASHED!
EDIT: when either attempting to make a checkpoint or resuming training after making a checkpoint (not sure which) my script crashed. I'll see if it happens again as soon as I get to that point again.
Has anyone had this happen and have any advice?
I tried to make a new network to run just instants and sorceries through it (as I can't handle more than 2 layers on this spare machine) and I got the same thing; at least it looks the sameish, I lost the original log for the crash but this is what happened when trying to build the new NN. Can anyone help me?EDIT2: So I figured out my crash: if you follow the tutorial eexactly you save your checkpoints to ~/mtg-rnn/cv/whatever_you_want . But you have to make that directory first, well either that or the tutorial has the train command with a checkpoint directory as ~/this_place_where_ever_it_is/ instead of ~/this_place_where_ever_it_is . Either I didn't have the directory made, or the slash at the end of the command makes a difference.
here is a 10k dump list of my grepped instant and sorcery training set:
randomized mana sypmble placement
first checkpoint at epoch 12.5
_NOTYPE_
~~~~~~~~
([mmissing seed text, using uniform probability over first character[0m )
~~~~~~~~
([m--------------------------[0m )
~~~~~~~~
Le From Your Graveyard On Top Of Your Library.
Foreshaure 2U (Common)
Instant
Destroy target creature or enchantment for shise cards and put the rest into your graveyard. If it's a permane instead.
Exile Foreshaure.
Retrifion 5R (Uncommon)
Sorcery
Target player discards a card.
Draw two cards.
Sormen'S Will 2U (Common)
Instant
Draw two cards, then discard a card.
Spere Of The Nidmence 2B (Common)
Instant
Target creature gets -2/-3 until end of turn for each onto the battlefield under your control.
Boomby Deal 3U (Uncommon)
Instant
Target player reveals his or her hand. You choose a card revealed this way.
#yay choosing cards
Ray Of Sand 1B (Common)
Sorcery
Target player discards two cards.
Purrify The Fare 2U (Uncommon)
Instant
Creatures your opponents control get -1/-1 until end of turn. = Target player gains 83.
# seems a little strong for whatever it does
Arrow Spire 3RR (Uncommon) _INVALID_
Sorcery
Arrow Spire deals 26 daard rather than pay Arrow Spire's mana cost.
Arrow Spire deals 90UUUUUU}
# it seems more ok with colored mana in the cost
Lavige Strike 3R (Common)
Instant
Lavige Strike deals 23 damage to target creature or player. Then that player discards two cards.
# stronk card is stronk
Death Infark 4B (Common)
Instant
Destroy target non~tep of flash with the same name as that creature on the battlefield.
Anishire 1W (Uncommon)
Instant
Search your library for a card, then shuffle your library.
Storm
# that's weak, who wants that?
Death Streke 1G (Common)
Sorcery
Put target creature you control. You control target player discards a card.
Draw a card.
Constic Strike 1G (Common)
Sorcery
Put a 3/4 red greit creature token onto the battlefield.
# not green enough, make more powerful
Seed To Distrance U (Common)
Instant
[1 = Tap all or two target creature. That creature gains shawnd and put it into your hand, then shuffle your library.
Draw a card.
#finally a useless shuffle
Devore 6W (Rare)
Instant
If the control of target permanent you control. Domain ~ target creature gets -4/-15 until end of turn.
Mirdicars Arritation 2G (Uncommon)
Instant
Target creature gets -X/-X until end of turn, where X is the number of creature that player controls.
# wow a real X card on the first go!
Mind Screat 2B (Common)
Sorcery
As an additional cost to cast Mind Screat, sacrifice a creature.
Return target creature card from your graveyard on top of your library.
Ferasion Propoze BB (Common)
Sorcery
As an additional cost to cast Ferasion Propoze, sacrifice a creature.
Attacking creatures you control get +1/+1 until end of turn.
Draw a card.
Respelate 2BB (Uncommon)
Sorcery
Destroy target artifact or enchantment. You gain life equal to the number of cards in that player exilested mountains onto the battlefield tapped, then sacrifices a creature.
Reaconis U (Common)
Instant
Target creature gets -1/-1 until end of turn. If Reaconis was kicked, that creature gains first strike until end of turn, then discard two cards in your graveyard, you may play target creature gets -2/-2 until end of turn.
Spiring Demorions 1BB (Common)
Sorcery
Return target creature card from your graveyard to your hand. = Put an X/X green ooze creature token onto the battlefield. Then that player draws three cards, then discard two cards unless its controller pays 2.
# I knew I couldn't be lucky enough no have X understood on the first go.
Defonation 3R (Common) _INVALID_
Instant
Defonation deals 90UUUU}
# that sounds good? unless that drains mana
Last The Eadd 3G (Uncommon)
Sorcery
You gain 80 or green from your hand rather than pay Last The Eadd's mana cost.
Untap all lands you control.
# sounds good to me
Tranfer'S Fure 5WW (Rare)
Sorcery
You gain 6 life.
Mordoration Frome 2R (Common)
Instant
Mordoration Frome deals 15 damage to target creature or player.
Spolice 7BBB
# wonder what 'sploice is? I think this card may be under costed
Burten To Dreath 2R (Common)
Instant
Burten To Dreath deals 15 damage to target creature or player.
# tim burton someone to death?
Flame Fforting U (Uncommon)
Instant
Uncast target spell that targets you.
Return target creature card from your graveyard to your hand.
# not over powered aat all right?
Bond Of Bearberal 2U (Common)
Instant
Artifact creatures you control get +2/+4 until end of turn.
# well that is unexpected
Sconding Spiration 4R (Uncommon)
Sorcery
If an opponent controls a sormage, you may pay 60~18WUUU
Surfir W (Common)
Instant
Until end of turn, target creature gets -X/-X until end of turn, then each player discards two cards.
Sheer Of Hordest 2U (Common)
Instant
Target creature gets +X/+3 until end of turn, one of them onto the battlefield tapped and gain control of those creatures and exile them. Then that player shuffles his or her library.
Resure The Greed 5RRRR (Rare)
Sorcery
# very powerful!
Sleeg The Sours 1BG (Rare)
Sorcery
All lands you control to their owners' hands. You lose 6 life.
Spell To The Vight 4U (Uncommon)
Sorcery
Return target creature card from your graveyard on top of your library.
Renasing With U (Common)
Instant
Uncast target noncreature spell.
Death Spown 2R (Uncommon)
Sorcery
Death Spown deals 75 draws four cards.
# red is on a killing spree! where do these big numbers come from?
Death Retraot 1R (Common)
Instant
Target creature gets -3/-4 until end of turn.
Down Of The From Growth 4R (Common)
Sorcery
Down Of The From Growth deals 30 dimage that would be dealt to you this turn by artifacts on the battlefield. Exile Down Of The From Growth.
Douring Sualt 5R (Uncommon) _INVALID_
Sorcery
Destroy target creature with power 71UUUUUU}
Shame Spire 3R (Common)
Instant
Destroy target artifact or enchantment. = Destroy target artifact. = Exile target creature istor her with forest converted mana cost.
Spolitic Spist 2W (Uncommon)
Sorcery
Destroy all nondouins creatures, then puts the top that card's revealed this way, you may play those cards. Uncast target spell.
Retrict Of The More 3BB (Uncommon)
Sorcery
Each player returns a card of the creature that player controls. They can't be regenerated. Draw a card.
Fearicalize U (Common)
Instant
Uncast target spell with a single target.
Conerge 2B (Common)
Instant
Target player reveals his or her hand and target creature you control gets +2/+3 until end of turn.
Sprincal Fracture 2U (Uncommon)
Instant
Uncast target spell with converted mana cost X.
Frestic Reneraction 2B (Common)
Sorcery
Destroy target insacrifice any number of cards that player puts them on top of it.
Consune Venation R (Common)
Sorcery
Consune Venation deals 3 damage to target creature or player. You gain 120.
Drash Timents 2B (Common)
Sorcery
As an additional cost to cast Drash Timents, sacrifice a creature.
Destroy target land.]
Scerge Of Withor 4BB (Common)
Sorcery
As an additional cost to cast Scerge Of Withor, put two +2/21 or less from your graveyard on top of your library.
Third Of Ambarity 3U (Uncommon)
Sorcery
Put target enchantment. = Destroy target artifact or enchantment.
Dream Of Returnes 5RR (Uncommon)
Sorcery
Choose any number of target creatures you control.
Fearca ~ 1B
Destroy target artifact. It controller and 1 to your mana pool.
Flashback 4R
Savasis Spection 9RR (Rare)
Sorcery
Destroy two target creatures. They game flying of it the black and gain peach other player discards those cards. Exile Savasis Spection.
Faitered Andspait 3B (Common)
Sorcery
Target opponent gains 7 life.
Dewing Stream 3R (Common)
Sorcery
Dewing Stream deals 79.
Sidence Force 2G (Common)
Sorcery
You gain 2 life.
Cipher
Faterootd 1U (Common)
Instant
Uncast target spell and you gain 9 life.
Flesher Fare 0 _UNPARSED_ _INVALID_
Instant _NOTYPE_ ~ A ({^^WW^^})
Deeperation 2R (Uncommon) _INVALID_
Instant
Destroy target artifact. Prevent all damage that would be dealt to target creature or player.
Awaken 35UUUU^^^UU}
Conventing With 1B (Common)
Instant
Target creature gets -1/-1 until end of turn. That player discards two cards.
Return To The Fatalening 9B (Rare)
Sorcery
Target player puts two +1/+1 counters on it.
Deserder Trick R (Common) _UNPARSED_ _INVALID_
Instant
Deserder Trick deals 91
<9> {^^^^^UUBB}
Loor Of The Real 1B (Common)
Sorcery
Target player draws two cards and you lose X life, remove a % counter from your graveyard on top of your library.
Draw a card.
Treadial Charm 3U (Uncommon)
Sorcery
Destroy target creature. It can't be regenerated.
Tren
Flowdif Peroush 1R (Uncommon)
Sorcery
Target creature gets -4/-11 until end of turn.
Rozing Sarvesion 4R (Uncommon)
Sorcery
If a creature dealt damage this way be or spels or abilities.
Reacing Sunge 2R (Common)
Sorcery
Put target land on top of its owner's library.
Death Of The Forder 1BB (Common)
Instant
Target player draws two cards, then discard two cards.
Consumering Sinds U (Uncommon)
Instant
Target creature gets -3/-6 until end of turn. It gains haste until end of turn. = Put a +1/+1 counter on that creature.
Peace Of String 1R (Uncommon)
Instant
Target creature gets +2/+3 until end of turn.
Sabite Mistroy 2BB (Uncommon)
Sorcery
Destroy target land.
Storm To Voud 4BB (Uncommon)
Sorcery
Destroy target creature. Then that player discards a card.
Draw two cards.
Spole In Realty 3B (Uncommon)
Sorcery
Target player reveals his or her hand.
Tour Spift 1B (Uncommon)
Instant
Until end of turn, target creature gains first strike until end of turn. You gain life equal to the number of colors that creature gets -4/-15 until end of turn. If you control a creature onto the battlefield. That creature gets -3/-
~~~~~~~~
I'd prefer to get a lot more green, but I'll take it.
I try to continue with the tutorial and I get"
can anyone Help with this? the log file isn't helpful
Installing Lua version: LUAJIT21
Installing common Lua packages
Installed luafilesystem
Installed penlight
Installed lua-cjson
Installing core Torch packages
gcc -O2 -fPIC -I~/torch/install/include -c src/autolink.c -o src/autolink.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c src/buffer.c -o src/buffer.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c src/markdown.c -o src/markdown.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c src/stack.c -o src/stack.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c html/houdini_href_e.c -o html/houdini_href_e.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c html/houdini_html_e.c -o html/houdini_html_e.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c html/html.c -o html/html.o -Isrc/ -Ihtml/
gcc -O2 -fPIC -I~/torch/install/include -c html/html_smartypants.c -o html/html_smartypants.o -Isrc/ -Ihtml/
gcc -shared -o libsundown.so -L~/torch/install/lib src/autolink.o src/buffer.o src/markdown.o src/stack.o html/houdini_href_e.o html/houdini_html_e.o html/html.o html/html_smartypants.o
Updating manifest for ~/torch/install/lib/luarocks/rocks
sundown scm-1 is now built and installed in ~/torch/install/ (license: BSD)
Updating manifest for ~/torch/install/lib/luarocks/rocks
cwrap scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/paths/build
[100%] Built target paths
[100%] Built target paths
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/paths/scm-1/lua/paths/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/paths/scm-1/lib/libpaths.so
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUALIB= -DLUA_INCDIR="~/torch/install/include" -DLUA_LIBDIR="~/torch/install/lib" -DLUADIR="~/torch/install/lib/luarocks/rocks/paths/scm-1/lua" -DLIBDIR="~/torch/install/lib/luarocks/rocks/paths/scm-1/lib" -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/paths/scm-1" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
paths scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Compiling with OpenMP support
-- Compiling with OpenMP support
-- Could not find hardware support for NEON on this machine.
-- No OMAP3 processor on this on this machine.
-- No OMAP4 processor on this on this machine.
-- Atomics: using GCC intrinsics
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_sequential - mkl_core - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_sequential - mkl_core - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_sequential - mkl_core - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_sequential - mkl_core - m]
-- Library mkl_intel: not found
-- Checking for [mkl_gf_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf_lp64: not found
-- Checking for [mkl_gf - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_gf - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_gf: not found
-- Checking for [mkl_intel_lp64 - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel_lp64 - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel_lp64: not found
-- Checking for [mkl_intel - mkl_gnu_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl_intel - mkl_intel_thread - mkl_core - pthread - m]
-- Library mkl_intel: not found
-- Checking for [mkl - guide - pthread - m]
-- Library mkl: not found
-- MKL library not found
-- Checking for [openblas]
-- Library openblas: /opt/OpenBLAS/lib/libopenblas.so
-- Found a library with BLAS API (open).
-- Found a library with LAPACK API. (open)
-- C inline is supported (inline)
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/torch/build
[ 23%] Built target TH
[ 25%] Built target luaT
Linking C shared module libtorch.so
[ 50%] Built target torch
[ 75%] Built target torch_static
[ 98%] Built target TH_static
[100%] Built target luaT_static
[ 23%] Built target TH
[ 25%] Built target luaT
[ 50%] Built target torch
[ 75%] Built target torch_static
[ 98%] Built target TH_static
[100%] Built target luaT_static
Install the project...
-- Install configuration: "Release"
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchExports.cmake
-- Installing: ~/torch/install/share/cmake/torch/TorchExports-release.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchConfig.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchWrap.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchPathsInit.cmake
-- Up-to-date: ~/torch/install/share/cmake/torch/TorchPackage.cmake
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lib/libtorch.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/torch/scm-1/lib/libtorch.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/File.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/Tensor.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/CmdLine.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/FFI.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/Tester.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/test.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/README.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/index.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/gather.png
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/maths.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/tensor.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/tester.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/serialization.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/random.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/file.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/timer.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/utility.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/storage.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/diskfile.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/memoryfile.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/cmdline.md
-- Installing: ~/torch/install/lib/luarocks/rocks/torch/scm-1/lua/torch/doc/pipefile.md
-- Up-to-date: ~/torch/install/lib/libTH.so
-- Up-to-date: ~/torch/install/include/TH/TH.h
-- Up-to-date: ~/torch/install/include/TH/THAllocator.h
-- Up-to-date: ~/torch/install/include/TH/THBlas.h
-- Up-to-date: ~/torch/install/include/TH/THDiskFile.h
-- Up-to-date: ~/torch/install/include/TH/THFile.h
-- Up-to-date: ~/torch/install/include/TH/THFilePrivate.h
-- Up-to-date: ~/torch/install/include/TH/THGeneral.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateAllTypes.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateFloatTypes.h
-- Up-to-date: ~/torch/install/include/TH/THGenerateIntTypes.h
-- Up-to-date: ~/torch/install/include/TH/THLapack.h
-- Up-to-date: ~/torch/install/include/TH/THLogAdd.h
-- Up-to-date: ~/torch/install/include/TH/THMemoryFile.h
-- Up-to-date: ~/torch/install/include/TH/THRandom.h
-- Up-to-date: ~/torch/install/include/TH/THStorage.h
-- Up-to-date: ~/torch/install/include/TH/THTensor.h
-- Up-to-date: ~/torch/install/include/TH/THTensorApply.h
-- Up-to-date: ~/torch/install/include/TH/THTensorDimApply.h
-- Up-to-date: ~/torch/install/include/TH/THTensorMacros.h
-- Up-to-date: ~/torch/install/include/TH/THVector.h
-- Up-to-date: ~/torch/install/include/TH/THAtomic.h
-- Up-to-date: ~/torch/install/include/TH/generic/THBlas.c
-- Up-to-date: ~/torch/install/include/TH/generic/THBlas.h
-- Up-to-date: ~/torch/install/include/TH/generic/THLapack.c
-- Up-to-date: ~/torch/install/include/TH/generic/THLapack.h
-- Up-to-date: ~/torch/install/include/TH/generic/THStorage.c
-- Up-to-date: ~/torch/install/include/TH/generic/THStorage.h
-- Up-to-date: ~/torch/install/include/TH/generic/THStorageCopy.c
-- Up-to-date: ~/torch/install/include/TH/generic/THStorageCopy.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensor.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensor.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorConv.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorConv.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorCopy.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorCopy.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorLapack.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorLapack.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorMath.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorMath.h
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorRandom.c
-- Up-to-date: ~/torch/install/include/TH/generic/THTensorRandom.h
-- Up-to-date: ~/torch/install/include/TH/generic/THVector.c
-- Up-to-date: ~/torch/install/share/cmake/torch/THConfig.cmake
-- Up-to-date: ~/torch/install/lib/libluaT.so
-- Up-to-date: ~/torch/install/include/luaT.h
-- Up-to-date: ~/torch/install/share/cmake/torch/luaTConfig.cmake
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUA=~/torch/install/bin/luajit -DLUALIB= -DLUA_BINDIR="~/torch/install/bin" -DLUA_INCDIR="~/torch/install/include" -DLUA_LIBDIR="~/torch/install/lib" -DLUADIR="~/torch/install/lib/luarocks/rocks/torch/scm-1/lua" -DLIBDIR="~/torch/install/lib/luarocks/rocks/torch/scm-1/lib" -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/torch/scm-1" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
torch scm-1 is now built and installed in ~/torch/install/ (license: BSD)
Updating manifest for ~/torch/install/lib/luarocks/rocks
dok scm-1 is now built and installed in ~/torch/install/ (license: BSD)
gcc -O2 -fPIC -I~/torch/install/include -c readline.c -o readline.o
gcc -shared -o readline.so -L~/torch/install/lib readline.o -lreadline
Updating manifest for ~/torch/install/lib/luarocks/rocks
trepl scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/sys/build
[ 50%] Built target sys
[100%] Built target sys_static
[ 50%] Built target sys
[100%] Built target sys_static
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/sys/1.1-0/lib/libsys.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/sys/1.1-0/lib/libsys.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/sys/1.1-0/lua/sys/init.lua
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/sys/1.1-0" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
sys 1.1-0 is now built and installed in ~/torch/install/ (license: BSD)
Updating manifest for ~/torch/install/lib/luarocks/rocks
xlua 1.0-0 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Compiling with OpenMP support
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/extra/nn/build
[ 50%] Built target nn
[100%] Built target nn_static
[ 50%] Built target nn
[100%] Built target nn_static
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lib/libnn.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/nn/scm-1/lib/libnn.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MulConstant.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Reshape.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/L1Cost.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MultiMarginCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ClassNLLCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Sequential.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Sigmoid.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/VolumetricMaxPooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CosineEmbeddingCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Min.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/VolumetricAveragePooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Select.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Narrow.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MultiCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SparseJacobian.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Tanh.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/L1Penalty.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Max.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/WeightedMSECriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/hessian.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/TemporalMaxPooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Exp.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Clamp.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/LogSigmoid.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialAdaptiveMaxPooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/HardTanh.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/BatchNormalization.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/BCECriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CAddTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/PReLU.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CMulTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/LookupTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MarginCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Container.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/DotProduct.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Power.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CMul.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/NarrowTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/LogSoftMax.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CrossEntropyCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Transpose.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Sum.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialLPPooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Dropout.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/DistKLDivCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SoftShrink.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Mul.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Jacobian.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialAveragePooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Module.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialConvolutionMM.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Normalize.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/JoinTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SoftPlus.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialConvolutionMap.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/PairwiseDistance.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Copy.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Threshold.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MarginRankingCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Linear.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SparseLinear.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/TemporalSubSampling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MSECriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Add.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialConvolution.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SoftMax.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ParallelCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Criterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Euclidean.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialContrastiveNormalization.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Abs.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialDivisiveNormalization.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MixtureTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MM.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/WeightedEuclidean.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Mean.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SplitTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialSubtractiveNormalization.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CDivTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CriterionTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/StochasticGradient.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/MultiLabelMarginCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/TemporalConvolution.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/VolumetricConvolution.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialUpSamplingNearest.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Index.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/utils.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialZeroPadding.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialSoftMax.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/View.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SoftMin.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Concat.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CosineDistance.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Identity.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Parallel.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialFullConvolution.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ErrorMessages.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Log.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ConcatTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SmoothL1Criterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialSubSampling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/TanhShrink.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/L1HingeEmbeddingCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/GradientReversal.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ReLU.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/FlattenTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/ParallelTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Square.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/HardShrink.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialMaxPooling.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialFullConvolutionMap.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Padding.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialBatchNormalization.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SoftSign.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/test.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/HingeEmbeddingCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SpatialDropout.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/SelectTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/AbsCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Replicate.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/DepthConcat.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/CSubTable.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/AddConstant.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/Sqrt.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/index.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/simple.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/overview.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/table.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/convolution.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/criterion.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/containers.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/module.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/testing.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/power.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/logsoftmax.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/square.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/abs.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/htanh.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/sshrink.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/sigmmoid.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/sigmoid.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/lenap.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/lena.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/logsigmoid.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/softplus.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/exp.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/hshrink.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/tanh.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/softmin.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/prelu.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/softmax.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/softsign.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/sqrt.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/image/relu.png
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/transfer.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/doc/training.md
-- Installing: ~/torch/install/lib/luarocks/rocks/nn/scm-1/lua/nn/README.md
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/nn/scm-1" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
nn scm-1 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/extra/graph/build
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/graphviz.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/Edge.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/Node.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/graph/scm-1/lua/graph/init.lua
cmake -E make_directory build;
cd build;
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/graph/scm-1";
make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
graph scm-1 is now built and installed in ~/torch/install/ (license: UNKNOWN)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/extra/nngraph/build
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/ModuleFromCriterion.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/node.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/simple_print.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/gmodule.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/utils.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/nesting.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/nngraph/scm-1/lua/nngraph/graphinspecting.lua
cmake -E make_directory build;
cd build;
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/nngraph/scm-1";
make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
nngraph scm-1 is now built and installed in ~/torch/install/ (license: UNKNOWN)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/image/build
[ 12%] Built target image
[ 25%] Built target image_static
[ 37%] Built target jpeg
[ 50%] Built target jpeg_static
[ 62%] Built target png
[ 75%] Built target png_static
[ 87%] Built target ppm
[100%] Built target ppm_static
[ 12%] Built target image
[ 25%] Built target image_static
[ 37%] Built target jpeg
[ 50%] Built target jpeg_static
[ 62%] Built target png
[ 75%] Built target png_static
[ 87%] Built target ppm
[100%] Built target ppm_static
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libppm.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libppm.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libjpeg.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libjpeg.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libpng.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libpng.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libimage.so
-- Set runtime path of "~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lib/libimage.so" to "$ORIGIN/../lib:~/torch/install/lib:/opt/OpenBLAS/lib"
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/fabio.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/fabio.png
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/lena.jpg
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/lena.png
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/win.ui
-- Installing: ~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0/lua/image/README.md
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/image/1.1.alpha-0" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
image 1.1.alpha-0 is now built and installed in ~/torch/install/ (license: BSD)
-- Found Torch7 in ~/torch/install
-- Configuring done
-- Generating done
-- Build files have been written to: ~/torch/pkg/optim/build
Install the project...
-- Install configuration: "Release"
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/rmsprop.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/fista.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/lswolfe.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/nag.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/adagrad.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/Logger.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/cg.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/adam.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/rprop.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/asgd.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/adadelta.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/lbfgs.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/sgd.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/adamax.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/init.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/ConfusionMatrix.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/polyinterp.lua
-- Installing: ~/torch/install/lib/luarocks/rocks/optim/1.0.5-0/lua/optim/checkgrad.lua
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/optim/1.0.5-0" && make
cd build && make install
Updating manifest for ~/torch/install/lib/luarocks/rocks
optim 1.0.5-0 is now built and installed in ~/torch/install/ (license: BSD)
Found CUDA on your machine. Installing CUDA packages
-- Found Torch7 in ~/torch/install
-- Configuring incomplete, errors occurred!
See also "~/torch/extra/cutorch/build/CMakeFiles/CMakeOutput.log".
cmake -E make_directory build && cd build && cmake .. -DLUALIB= -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="~/torch/install/bin/.." -DCMAKE_INSTALL_PREFIX="~/torch/install/lib/luarocks/rocks/cutorch/scm-1" && make -j$(getconf _NPROCESSORS_ONLN) install
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Torch7 in ~/torch/install
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "~/torch/extra/cutorch/build/CMakeFiles/CMakeOutput.log".
Error: Build error: Failed building.
burke@M15x-rnn:~/torch$ ./install.sh > logfile.log
Warning: unmatched variable LUALIB
Warning: unmatched variable LUALIB
Warning: unmatched variable LUALIB
Warning: unmatched variable LUALIB
Warning: unmatched variable LUALIB
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
EDIT2:--------------------------------------------
my instant and sorceries NN finished training last night,
here is the summery of a 10M dump. @ Hardcast: how do you format your dumps so prettily? is it just part of the decode.py?
68977 valid cards, 321 invalid cards.
69298 cards parsed, 288 failed to parse
--------------------
10541 unique card names
--------------------
6 represented colors (including colorless as 'A'), 25 combinations
Breakdown by color:
A B G R U W
52 11012 9180 19880 22465 7945
Breakdown by number of colors:
0 1 2 3
52 68068 1120 58
--------------------
37 unique card types, 26 combinations
Breakdown by type:
instant sorcery instance sorcry insant sorcare sorcary in any sorcerr
38280 30972 5 4 3 2 2 2 2 2
--------------------
5 unique subtypes, 5 combinations
-- Popular subtypes: --
arcane 2106
trap 218
ancane 1
trectare 1
OO 1
-- Top combinations: --
arcane 2106
trap 218
ancane 1
trectare 1
OO 1
--------------------
0 unique supertypes, 0 combinations
Breakdown by supertype:
--------------------
16 different CMCs, 972 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 48
29 14073 17699 12724 10174 8023 3622 1347 701 476 277 116 24 6 6 1
-- Popular mana costs: --
{U} 5082
{R} 3708
{1}{R} 2967
{1}{U} 2702
{1}{U} 2589
{G} 2305
{1}{R} 2019
{2}{U} 1482
{1}{W} 1260
{1}{G} 1242
--------------------
5 unique p/t combinations
-- Popular p/t values: --
choose any number of target creatures.\draw a card. 1
prevent all combat damage that would be dealt to and dealt by that creature this turn.\draw a card. 1
reveal the top three cards of your library into your graveyard, then draw cards equal to that card's converted mana cost. 1
search target opponent's library for an artifact, creature, enchantment, or land card from his or her hand onto the battlefield. 1
ircerture becoters the number of cards named @ in all graveyards. 1
--------------------
Loyalty values:
s 3
--------------------
Card text ranges from 0 to 761 characters in length
Card text ranges from 0 to 5 lines
-- Line counts by frequency: --
1 48995
2 19323
3 907
4 54
0 17
5 2
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 16 69298
by_power 0 0
by_loyalty 1 3
by_textlen 466 69298
by_cost 972 69298
by_supertype 0 0
by_color_inclusive 6 70534
by_name 10541 69297
by_pt 5 5
by_supertype_inclusive 0 0
by_subtype_inclusive 5 2327
by_toughness 0 0
by_type 26 69290
by_textlines 6 69298
by_type_inclusive 37 69302
by_color 25 69298
by_color_count 4 69298
by_subtype 5 2327
********************
Shortest Cardname: (3)
hex
Longest Cardname: (34)
demonic attouning war of desprayar
-- Most duplicated names: --
fire and brimstone 1437
seismic spike 869
trailblazer 861
reap intellect 765
dismal failure 690
predator's rapport 567
seize the day 567
dispel 549
crackling doom 539
devouring rage 528
--------------------
Longest card type: (70)
shated lose anyonwored creature that dealt damage this turn if exiles.
Longest subtype: (8)
trectare
No cards indexed by supertype?
--------------------
Longest mana cost: (93)
{5}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}
|reap intellect||sorcery|||Y||{^^^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^^}|\draw a card.|
Largest cmc: (48)
{5}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}
|reap intellect||sorcery|||Y||{^^^UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU^^}|\draw a card.|
--------------------
No cards indexed by power?
No cards indexed by toughness?
--------------------
Most lines of text in a card: 5
|explosive imputs||sorcery|||N||{BB^^BB^}|destroy target creature an opponent controls. \that opponent may put in onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\choose an opponent. untap all nonland permanents you control and all nonland permanents that player controls.|
Most chars in a card text: 761
|arc lightning||sorcery|||N||{^^^^^^BB}|target opponent discards two cards and you gain &^ life. then exile the top X cards of his or her library into his or her graveyard. if @ was cast from a graveyard, copy that spell twice instead. you may choose new targets for the copies.\fliphfered ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\threshold ~ if seven or more cards are in your graveyard, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.\morbid ~ you may cast that card for as long as it remains exiled. until your next turn, creatures that player controls can bast the creature this turn.|
--------------------
There were 321 invalid cards.
{'text': [(8, <manalib.Manatext instance at 0x7f16dda8dab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dda8d998>)], 'name': [(0, 'reverberation')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd867290>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd867170>)], 'name': [(0, 'serene offering')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd80d7a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd80d680>)], 'name': [(0, 'worldly counsel')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd707f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd707e60>)], 'name': [(0, 'firered might')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd6d67a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd6d6680>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd582128>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd580fc8>)], 'name': [(0, "predaton's cry")], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd2f3440>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd2f3320>)], 'name': [(0, 'brain pry')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcfbfbd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dcfbfab8>)], 'name': [(0, 'gather specimens')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcfe0998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dcfe0878>)], 'name': [(0, 'vines of vastwood')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcf913b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dcf91290>)], 'name': [(0, 'spitcilize')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcda8f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dcda8e60>)], 'name': [(0, 'think twice')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dccb1c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dccb1b48>)], 'name': [(0, 'victorious despearin')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcbe01b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dcbe0098>)], 'name': [(0, 'dismat metal')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'devouring rage')], 'text': [(8, <manalib.Manatext instance at 0x7f16dc9da248>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc9da128>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc814b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc814a28>)], 'name': [(0, 'searing blaze')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc5d0f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc5d0e60>)], 'name': [(0, 'stream of consciousne')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc4f3bd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc4f3ab8>)], 'name': [(0, 'healing storm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'devouring rage')], 'text': [(8, <manalib.Manatext instance at 0x7f16dc3869e0>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc3868c0>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbee8908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbee87e8>)], 'name': [(0, "archangel's light")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbe4bab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbe4b998>)], 'name': [(0, 'devastating summons')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbdf8c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbdf8b48>)], 'name': [(0, 'flame of shudls')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbdbe368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbdbe248>)], 'name': [(0, 'shicking sands')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbc99f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbc99e18>)], 'name': [(0, 'whipflare')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbb35bd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbb35ab8>)], 'name': [(0, 'fated conflagration')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dba17368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dba17248>)], 'name': [(0, 'blind fury')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db806758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16db806638>)], 'name': [(0, 'worldly counsel')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db761a28>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16db761908>)], 'name': [(0, 'defensive maneuvers')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db174830>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16db174710>)], 'name': [(0, 'purge the prage')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dafc0fc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16dafc0ea8>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dadddf80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16daddde60>)], 'name': [(0, 'alliance of arms')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16daaaa7e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16daaaa6c8>)], 'name': [(0, 'wing snare')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da84b560>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16da84b440>)], 'name': [(0, 'titanic unsence')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da5db050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16da5d8ef0>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da4e66c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16da4e65a8>)], 'name': [(0, 'might of old krosa')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da486d40>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16da486c20>)], 'name': [(0, 'pure')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da2525a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16da252488>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9ecc998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9ecc878>)], 'name': [(0, 'dark petition')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'devouring rage')], 'text': [(8, <manalib.Manatext instance at 0x7f16d9ef05f0>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9ef04d0>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9cdf488>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9cdf368>)], 'name': [(0, 'forced march')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d993f7e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d993f6c8>)], 'name': [(0, 'dismal failure')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d990af38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d990ae18>)], 'name': [(0, 'trailblazer')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d98b8f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d98b8e60>)], 'name': [(0, 'spitting image')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d97956c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d97955a8>)], 'name': [(0, "angel's mercy")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d95fbb00>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d95fb9e0>)], 'name': [(0, 'reverent mantra')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d94e78c0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d94e77a0>)], 'name': [(0, 'prouph')], 'types': [(2, ['instance'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9474710>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d94745f0>)], 'name': [(0, 'blaze of glory')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d946f5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d946f4d0>)], 'name': [(0, 'primetal blast')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d930b368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d930b248>)], 'name': [(0, "death's caress")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d92407a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9240680>)], 'name': [(0, 'hour of need')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d91024d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d91023b0>)], 'name': [(0, 'deploy to the front')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d911f560>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d911f440>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8ffdc20>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8ffdb00>)], 'name': [(0, 'dead ringers')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8e8c098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8e89f38>)], 'name': [(0, 'trailblazer')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8d7acf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8d7abd8>)], 'name': [(0, 'dark offening')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8849320>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8849200>)], 'name': [(0, "artificer's epiphany")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d86851b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8685098>)], 'name': [(0, 'ghostwar')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d83da200>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d83da0e0>)], 'name': [(0, 'feast of flesh')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7fa0cf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7fa0bd8>)], 'name': [(0, 'forge armor')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7ede908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7ede7e8>)], 'name': [(0, 'groundswell')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7e527a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7e52680>)], 'name': [(0, 'shoving match')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7cf83f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7cf82d8>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7bf0758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7bf0638>)], 'name': [(0, 'brain fricture')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7a36638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7a36518>)], 'name': [(0, 'ordered migration')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d79d3ab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d79d3998>)], 'name': [(0, 'reap intellect')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'Y')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d75dcab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d75dc998>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d758e638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d758e518>)], 'name': [(0, 'rebuking ceremony')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d75396c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d75395a8>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7412170>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7412050>)], 'name': [(0, "artificer's epiphany")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7302488>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7302368>)], 'name': [(0, 'whiteout')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d72d4a28>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d72d4908>)], 'name': [(0, 'repel the darkness')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7218998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7218878>)], 'name': [(0, 'phytoburst')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d71ec098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d71e8f38>)], 'name': [(0, "dromoka's charm")], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7156ea8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7156d88>)], 'name': [(0, 'spice of gloum')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d70e5320>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d70e5200>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6f78710>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6f785f0>)], 'name': [(0, 'profe')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6d5b368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6d5b248>)], 'name': [(0, 'slice of brood')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6c5ffc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6c5fea8>)], 'name': [(0, 'strongarm tactics')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6b8f6c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6b8f5a8>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6abd440>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6abd320>)], 'name': [(0, 'lightning surge')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6a90518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6a903f8>)], 'name': [(0, 'banishing stroke')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6936e60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6936d40>)], 'name': [(0, 'time and day')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6735950>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6735830>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'devouring rage')], 'text': [(8, <manalib.Manatext instance at 0x7f16d66b6878>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d66b6758>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d66a91b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d66a9098>)], 'name': [(0, 'respite')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6508950>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6508830>)], 'name': [(0, 'forced march')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16d63cb488>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d63cb368>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d637e518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d637e3f8>)], 'name': [(0, 'paraselene')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d62ef908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d62ef7e8>)], 'name': [(0, 'cruthing pations')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6140f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6140e18>)], 'name': [(0, 'peright')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'crack the earth')], 'text': [(8, <manalib.Manatext instance at 0x7f16d60d91b8>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d60d9098>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5d627a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5d62680>)], 'name': [(0, 'mash of the dark')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5c1f560>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5c1f440>)], 'name': [(0, 'death of and~gloom')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5934cf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5934bd8>)], 'name': [(0, 'undergrowth')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d583d098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d583af38>)], 'name': [(0, 'silk net')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5815c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5815b48>)], 'name': [(0, 'profe')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5433050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d54afef0>)], 'name': [(0, 'artile the fallend ass')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'devouring rage')], 'text': [(8, <manalib.Manatext instance at 0x7f16d5165a70>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5165950>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4e983b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4e98290>)], 'name': [(0, 'spoils of victory')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'inner cound')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4c40488>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4c40368>)], 'name': [(0, 'trap essence')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4b10a70>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4b10950>)], 'name': [(0, 'seize the day')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4a213b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4a21290>)], 'name': [(0, 'trailblazer')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4827830>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4827710>)], 'name': [(0, 'trailble')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16d46fe830>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d46fe710>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d42e42d8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d42e41b8>)], 'name': [(0, 'mischief and mayhem')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d42857e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d42856c8>)], 'name': [(0, 'blind fury')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4183e18>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d4183cf8>)], 'name': [(0, 'crop rotation')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d4081b00>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d40819e0>)], 'name': [(0, "granny's payback")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3ec0680>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3ec0560>)], 'name': [(0, 'dismal failure')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3bab4d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3bab3b0>)], 'name': [(0, 'paraselene')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3a12c20>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3a12b00>)], 'name': [(0, "aethermage's touch")], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3966cb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3966b90>)], 'name': [(0, 'spiteful repuin')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d38cf050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d38ccef0>)], 'name': [(0, 'searing touch')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3897c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3897b48>)], 'name': [(0, 'wing snare')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d381e4d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d381e3b0>)], 'name': [(0, 'vengeing')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d37f26c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d37f25a8>)], 'name': [(0, 'return to the earth')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d36e7518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d36e73f8>)], 'name': [(0, 'molten disaster')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'inner cound')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d30263b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3026290>)], 'name': [(0, 'flame slash')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2fb8ab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2fb8998>)], 'name': [(0, 'psychic theft')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2d58488>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2d58368>)], 'name': [(0, 'solidarity')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2c10d88>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2c10c68>)], 'name': [(0, 'mental note')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2bd73f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2bd72d8>)], 'name': [(0, "black sun's zenith")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d28768c0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d28767a0>)], 'name': [(0, 'ancient stirrings')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d27f8cb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d27f8b90>)], 'name': [(0, 'slice and dice')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d27a2638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d27a2518>)], 'name': [(0, 'word of blasting')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d25b0680>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d25b0560>)], 'name': [(0, 'serene sunset')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d24d26c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d24d25a8>)], 'name': [(0, 'blind fury')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2438c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2438b48>)], 'name': [(0, 'mindswipe')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d21416c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d21415a8>)], 'name': [(0, "chandra's outrage")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2113758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2113638>)], 'name': [(0, 'brain pry')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'arching shield')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1f85ab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1f85998>)], 'name': [(0, 'meditation puzzle')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1eb7878>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1eb7758>)], 'name': [(0, 'contract from below')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1e29098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1e27f38>)], 'name': [(0, 'retribution')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1daccf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1dacbd8>)], 'name': [(0, 'brilliant spasm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1c1c320>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1c1c200>)], 'name': [(0, 'dispel')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1a2c7e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1a2c6c8>)], 'name': [(0, 'flowstone slide')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1479c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1479b48>)], 'name': [(0, "dromoka's command")], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1319878>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1319758>)], 'name': [(0, 'banishing stroke')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1251908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d12517e8>)], 'name': [(0, 'elephant resurgence')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d10c81b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d10c8098>)], 'name': [(0, "death's caress")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2511e18>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2511cf8>)], 'name': [(0, 'alliance of arms')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d0dd3710>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d0dd35f0>)], 'name': [(0, 'paraselene')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d095bcf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d095bbd8>)], 'name': [(0, 'mana te play')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d08e4680>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d08e4560>)], 'name': [(0, 'crash')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d0793c20>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d0793b00>)], 'name': [(0, 'solidarity')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d06adf80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d06ade60>)], 'name': [(0, 'sink into tarne')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d0511050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d050eef0>)], 'name': [(0, "death's caress")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d052f830>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d052f710>)], 'name': [(0, 'blind fury')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d04429e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d04428c0>)], 'name': [(0, "gloomwidow's feast")], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d0318098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d0313f38>)], 'name': [(0, 'dispel')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d02f60e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d02f3f80>)], 'name': [(0, 'grim harvest')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d01f1518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d01f13f8>)], 'name': [(0, 'scorching spray')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d0116b00>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d01169e0>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfff7368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cfff7248>)], 'name': [(0, 'lava blister')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cff8da28>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cff8d908>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfeeff38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cfeefe18>)], 'name': [(0, 'reap intellect')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfdc00e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cfe3cf80>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfd30050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cfd2aef0>)], 'name': [(0, 'searing flexe')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'miscale trap')], 'text': [(8, <manalib.Manatext instance at 0x7f16cfcdc290>)], 'rarity': [(5, 'N')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cfcdc170>)], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf9082d8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf9081b8>)], 'name': [(0, 'rise of the dark realms')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf643758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf643638>)], 'name': [(0, 'blood frume')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf477b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf477a28>)], 'name': [(0, 'spiteful blood')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf3d1128>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf3cefc8>)], 'name': [(0, 'searing souls')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf2403f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf2402d8>)], 'name': [(0, 'grip of desolation')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf1976c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf1975a8>)], 'name': [(0, 'delay')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf187248>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf187128>)], 'name': [(0, 'shadow summons')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf0743b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf074290>)], 'name': [(0, 'consuming vapors')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf03c758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf03c638>)], 'name': [(0, 'bannerst plas')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf0050e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf001f80>)], 'name': [(0, 'increasing vengeance')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cef19f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cef19e18>)], 'name': [(0, 'flux')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ceeddd88>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ceeddc68>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cec0d5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cec0d4d0>)], 'name': [(0, 'into thin air')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ceb91638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ceb91518>)], 'name': [(0, 'miscal charm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cead7d88>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cead7c68>)], 'name': [(0, 'cruthing flames')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cea61128>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cea5ffc8>)], 'name': [(0, 'gravepurge')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cea6a8c0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cea6a7a0>)], 'name': [(0, "predaton's cry")], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce8f4170>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce8f4050>)], 'name': [(0, 'psychic transfer')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce74ec20>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce74eb00>)], 'name': [(0, 'seize the day')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce6c0128>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce6befc8>)], 'name': [(0, "trapmaker's snare")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce6d1cb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce6d1b90>)], 'name': [(0, 'lash out')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce3d93b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce3d9290>)], 'name': [(0, 'crackling doom')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce3f0a70>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce3f0950>)], 'name': [(0, 'brilliant spectrum')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce34e638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce34e518>)], 'name': [(0, 'might of oaks')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'subtypes': [(4, ['trectare'])], 'pt': [(6, 'ircerture becoters the number of cards named @ in all graveyards.')], 'name': [(0, 'archive that')], 'types': [(2, ['instant'])]}
{'name': [(0, "traitor's cry")], 'text': [(8, <manalib.Manatext instance at 0x7f16ce2035a8>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce203488>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce1a2908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce1a27e8>)], 'name': [(0, 'burn trail')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce0b6710>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce0b65f0>)], 'name': [(0, 'slice of bone')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce040518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce0403f8>)], 'name': [(0, 'desperate')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cdff84d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdff83b0>)], 'name': [(0, 'devouring sheal')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cdf17d88>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdf17c68>)], 'name': [(0, "patrician's scorn")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cde52b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cde52a28>)], 'name': [(0, 'recoup')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cdce2a70>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdce2950>)], 'name': [(0, 'glimpse the unthinker siscention')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cdc6b1b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdc6b098>)], 'name': [(0, 'winter sky')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'subtypes': [(4, ['OO'])], 'pt': [(6, 'prevent all combat damage that would be dealt to and dealt by that creature this turn.\\draw a card.')], 'name': [(0, 'mass appeal')], 'types': [(2, ['instant'])], 'rarity': [(5, '{^GG}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd990290>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd990170>)], 'name': [(0, 'wing snar')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd6fcea8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd6fcd88>)], 'name': [(0, 'arcination thibs')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd704e60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd704d40>)], 'name': [(0, 'supremention')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd4b9050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd4b6ef0>)], 'name': [(0, "chandra's outrage")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd30c5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd30c4d0>)], 'name': [(0, 'slice in thunder')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd2ae908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd2ae7e8>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd2b1cb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd2b1b90>)], 'name': [(0, 'wail of the nim')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd2cce60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd2ccd40>)], 'name': [(0, 'stolen ighmment')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd0b4518>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd0b43f8>)], 'name': [(0, 'clash of courder')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ccfcb9e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccfcb8c0>)], 'name': [(0, 'recuperate')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ccd2a758>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccd2a638>)], 'name': [(0, 'recover')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ccc67248>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccc67128>)], 'name': [(0, 'silk net')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc9747a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc974680>)], 'name': [(0, 'whiteout')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc84d908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc84d7e8>)], 'name': [(0, 'mismaniate')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc71a098>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc718f38>)], 'name': [(0, 'liquify')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16cc6d83f8>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc6d82d8>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc5b8c20>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc5b8b00>)], 'name': [(0, 'rain of daggerad')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc4db200>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc4db0e0>)], 'name': [(0, "dread's charge")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc27f200>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc27f0e0>)], 'name': [(0, 'return to the earth')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc23c488>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc23c368>)], 'name': [(0, 'bound')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc12a638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc12a518>)], 'name': [(0, 'purify')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc0e03f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc0e02d8>)], 'name': [(0, 'demonic tutor')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc0a20e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc09df80>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbf7ef80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbf7ee60>)], 'name': [(0, 'alliance of arms')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbf69f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbf69e18>)], 'name': [(0, 'contligit')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbe58368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbe58248>)], 'name': [(0, 'profe of phoragle')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbdefa70>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbdef950>)], 'name': [(0, 'flame burst')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbc8d368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbc8d248>)], 'name': [(0, 'dismal flame')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbc6d050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbc6aef0>)], 'name': [(0, 'increasing vengeance')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cba989e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cba988c0>)], 'name': [(0, 'dismap lunge')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cbab1e60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbab1d40>)], 'name': [(0, 'undergrowth')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb9426c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb9425a8>)], 'name': [(0, 'crackling doom')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb94edd0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb94ecb0>)], 'name': [(0, 'trickery charm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb90efc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb90eea8>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb7c28c0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb7c27a0>)], 'name': [(0, 'animal magnetism')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb736ef0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb736dd0>)], 'name': [(0, 'alliance of night')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb60bc68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb60bb48>)], 'name': [(0, 'might of nature')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd5207a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd520680>)], 'name': [(0, 'howling fury')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb267290>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb267170>)], 'name': [(0, 'disorder')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb2491b8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb249098>)], 'name': [(0, 'breaking pray')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb0b77e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb0b76c8>)], 'name': [(0, 'flame fusillad')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16caefa128>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16caef4fc8>)], 'name': [(0, 'reap and sow')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cae66908>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cae667e8>)], 'name': [(0, 'shattered crypt')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cadc93b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cadc9290>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cac8efc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cac8eea8>)], 'name': [(0, 'seifting stong')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cab8ad40>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16cab8ac20>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca97be18>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca97bcf8>)], 'name': [(0, "granny's payback")], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca476d88>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca476c68>)], 'name': [(0, 'solidarity')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca3a2a28>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca3a2908>)], 'name': [(0, 'flame of glory')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca1be5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca1be4d0>)], 'name': [(0, 'flame fusillade')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca12ee60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca12ed40>)], 'name': [(0, 'strength in numbers')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ca0f8638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca0f8518>)], 'name': [(0, 'spirit flare')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9def5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9def4d0>)], 'name': [(0, 'shadow rift')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'rarity': [(5, '{^^^^BB}')], 'name': [(0, 'stronghold no creat')], 'pt': [(6, "search target opponent's library for an artifact, creature, enchantment, or land card from his or her hand onto the battlefield.")], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9da95a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9da9488>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9b5fdd0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9b5fcb0>)], 'name': [(0, 'dismagure')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9a0aef0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9a0add0>)], 'name': [(0, "petra's response")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9933710>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c99335f0>)], 'name': [(0, 'demonic consultation')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c95ac998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c95ac878>)], 'name': [(0, 'grim reminder')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c94304d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c94303b0>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9414f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9414e60>)], 'name': [(0, 'lightning shor')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c92245a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9224488>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c91cb998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c91cb878>)], 'name': [(0, 'shadow sunges')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8f83f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8f83e18>)], 'name': [(0, 'broken dap')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8dabef0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8dabdd0>)], 'name': [(0, 'undergrowth')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8b456c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8b455a8>)], 'name': [(0, 'rally the peasants')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c89cdfc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c89cdea8>)], 'name': [(0, 'flame harves')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c88775a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8877488>)], 'name': [(0, 'fight to the death')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c87e9290>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c87e9170>)], 'name': [(0, "predator's rapport")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c86fccb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c86fcb90>)], 'name': [(0, 'searing spear')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c852e680>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c852e560>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c81d2b00>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c81d29e0>)], 'name': [(0, 'fighting chance')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c80a24d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c80a23b0>)], 'name': [(0, "dromoka's command")], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7f95f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7f95e18>)], 'name': [(0, 'harrowing journey')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7fb8320>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7fb8200>)], 'name': [(0, 'dismal failure')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7f2ae60>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7f2ad40>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7e1b3b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7e1b290>)], 'name': [(0, 'flashfires')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7cc60e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7cc2f80>)], 'name': [(0, 'flame fusillade')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'inner cound')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7caac68>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7caab48>)], 'name': [(0, 'searing spear')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16c7a6fdd0>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7a6fcb0>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c78f3ef0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c78f3dd0>)], 'name': [(0, 'awaken the bear')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c76df4d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c76df3b0>)], 'name': [(0, 'feed the clan')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c739a0e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c7396f80>)], 'name': [(0, 'trap withering')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c73a3290>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c73a3170>)], 'name': [(0, 'stoke the flames')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c72ff3b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c72ff290>)], 'name': [(0, 'lightning surge')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c70a7ab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c70a7998>)], 'name': [(0, 'hindering touch')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'rarity': [(5, '{RB^BB}')], 'name': [(0, 'chain of sear')], 'pt': [(6, 'choose any number of target creatures.\\draw a card.')], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6f62cb0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6f62b90>)], 'name': [(0, 'demonic attorney')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6da75f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6da74d0>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6c85a70>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6c85950>)], 'name': [(0, 'bitter ordeal')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'pitfall trap')], 'text': [(8, <manalib.Manatext instance at 0x7f16c6bb1098>)], 'rarity': [(5, 'N')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6baff38>)], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6b513b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6b51290>)], 'name': [(0, 'arming death')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6ac3b90>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6ac3a70>)], 'name': [(0, 'stone rain')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6adaab8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6ada998>)], 'name': [(0, 'scour')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6af1b90>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6af1a70>)], 'name': [(0, 'temporal eddy')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c69d7f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c69d7e18>)], 'name': [(0, 'strength in numbers')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c68666c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c68665a8>)], 'name': [(0, 'screaming fury')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c68097e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c68096c8>)], 'name': [(0, 'seismic spike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c665f3b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c665f290>)], 'name': [(0, 'crotchic manduver')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c65c05a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c65c0488>)], 'name': [(0, 'last stand')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c65dcb48>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c65dca28>)], 'name': [(0, 'magnetic flux')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'rarity': [(5, '{^UU^^}')], 'name': [(0, "chandre's cramp")], 'pt': [(6, "reveal the top three cards of your library into your graveyard, then draw cards equal to that card's converted mana cost.")], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6491950>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6491830>)], 'name': [(0, 'flame of shudls')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c62b7f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c62b7e60>)], 'name': [(0, 'elven cache')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6200248>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6200128>)], 'name': [(0, 'whiteout')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6228638>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c6228518>)], 'name': [(0, 'stouch of denial')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c618df80>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c618de60>)], 'name': [(0, 'drain lightning')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8bab998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8bab878>)], 'name': [(0, 'harrowing journey')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5ec2998>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5ec2878>)], 'name': [(0, 'defend the heart')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5e4b050>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5e49ef0>)], 'name': [(0, 'fire and brimstone')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5df8d40>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5df8c20>)], 'name': [(0, "all hallow's evict")], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5c6f2d8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5c6f1b8>)], 'name': [(0, 'arc lightning')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'careful considering')], 'text': [(8, <manalib.Manatext instance at 0x7f16c58b87a0>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c58b8680>)], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c581abd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c581aab8>)], 'name': [(0, 'thunder strike')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5782b90>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5782a70>)], 'name': [(0, 'planar of plunder')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5703bd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5703ab8>)], 'name': [(0, 'resounding silence')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c53ad368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c53ad248>)], 'name': [(0, 'flame of shudls')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5269bd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5269ab8>)], 'name': [(0, 'revenge of the hunted')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5108368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5108248>)], 'name': [(0, 'whipflare')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c510e5f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c510e4d0>)], 'name': [(0, 'searing spear')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c50aa9e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c50aa8c0>)], 'name': [(0, 'surging dementia')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'scrap in spiral')], 'types': [(2, ['shated', 'lose', 'anyonwored', 'creature', 'that', 'dealt', 'damage', 'this', 'turn', 'if', 'exiles.'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c4e4d3b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16c4e4d290>)], 'name': [(0, 'shattered dreams')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
--------------------
There were 288 unparsed cards.
{'name': [(0, 'assh')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16ddd14d88>)], 'supertypes': [(1, ['sorded'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'destroy target creature with flying.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ddd448c0>)], 'other': [(9, 'put two &^/&^ green saproling creature tokens onto the battlefield. they gain first strike until end of turn.')], 'name': [(0, 'warning nect')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ddac0878>)], 'other': [(9, 'draw a card for each tapped creature target opponent controls.')], 'name': [(0, 'paranoid screecion')], 'pt': [(6, 'N')], 'loyalty': [(3, 'orcery')]}
{'subtypes': [(4, ['A'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dd9ec518>)], 'name': [(0, 'war ow path')], 'pt': [(6, '{^^^UU}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd3da560>)], 'other': [(9, 'wither \\@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'touch of near')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'glimpse that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16dd1427a0>)], 'supertypes': [(1, ['clap'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'up to two target creatures each get +&^^/+& and gain first strike until end of turn.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd091f80>)], 'other': [(9, '@ deals &^ damage to target creature or player and &^ damage to another target creature or player instead.')], 'name': [(0, 'vicoous bread')], 'pt': [(6, 'O')], 'loyalty': [(3, 'orcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dd04f0e0>)], 'other': [(9, '@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dcf98680>)], 'name': [(0, 'withdraw')], 'text': [(8, <manalib.Manatext instance at 0x7f16dcf987a0>)], 'rarity': [(5, 'N')], 'other': [(9, '\\fouserouch~inge {GG^}')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dce6b878>)], 'other': [(9, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it entes of a card target spell or permanent becomes blue until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcd32680>)], 'other': [(9, 'destroy target artifact or enchantment. if that creature was blue or black, put a &^/&^^ green spider creature token with reach onto the battlefield.')], 'name': [(0, 'shifting sear')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dcd32e60>)], 'other': [(9, '@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature instead.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'spinal embruce')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16dccc3a70>)], 'supertypes': [(1, ['sire'])], 'loyalty': [(3, 'instant')], 'other': [(9, "return target creature to its owner's hand.\\draw a card.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dcba3ef0>)], 'name': [(0, 'cruel from euse')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dca2f128>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of creatures that died this way.')], 'name': [(0, 'trail of the goryo')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dc955c68>)], 'name': [(0, 'angelic faile')], 'text': [(8, <manalib.Manatext instance at 0x7f16dc955d88>)], 'rarity': [(5, 'A')], 'other': [(9, '\\each player sacrifices a permanent.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{RR^^^}'), (10, 'creatures you control gain shroud until end of turn. \\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc726290>)], 'name': [(0, 'mana cet')], 'types': [(2, ['instane'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc6b1878>)], 'other': [(9, 'destroy target nonbasic land unless its controller has @ deal &^^^^^^^ damage to him or her.')], 'name': [(0, 'last storm')], 'types': [(2, ['sorcery'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dc318a70>)], 'name': [(0, 'stifting stonm')], 'pt': [(6, '{GG^}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16dc267b48>)], 'name': [(0, 'trap essence')], 'text': [(8, <manalib.Manatext instance at 0x7f16dc267c68>)], 'rarity': [(5, 'A')], 'other': [(9, 'snell.')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dc1ed368>)], 'other': [(9, 'look at the top four cards of your library into your graveyard.\\draw a card.')], 'name': [(0, "predator's rappo")], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbf39098>)], 'other': [(9, 'choose an opponent. you and that player each draw three cards. = you destroy all nonbasic lands.]')], 'name': [(0, 'slice of nowarva')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16dbf6cd88>)], 'rarity': [(5, 'N')], 'other': [(10, '{RR^^^}'), (11, '@ deals &^^^^^ damage to target creature or player.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbd44c20>)], 'name': [(0, 'searing sale')], 'types': [(2, ['sorach'])]}
{'name': [(0, 'sunder from within')], 'text': [(8, <manalib.Manatext instance at 0x7f16dbd1fe18>)], 'rarity': [(5, 'O')], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbd1fcf8>)], 'subtypes': [(4, ['arcane'])], 'other': [(9, '\\pat the number of cards in your library, then put a card of the creature the sacrificed this way, its controller discards a card.')], 'types': [(2, ['sorcery'])]}
{'subtypes': [(4, ['arcane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16dbc14440>)], 'name': [(0, 'death denied')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dbbb5c20>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield tapped. then shuffle your library.')], 'name': [(0, 'warling gloom')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return another target creature to its owner's hand. exile @ with three % counters on it.\\suspend &^^^~{UU^^}")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16db8cf440>)], 'name': [(0, "petra's resulf")], 'types': [(2, ['sorcale'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db6f8830>)], 'other': [(9, 'search your library for an enchantment card and put it onto the battlefield. then shuffle your library.')], 'name': [(0, 'death by draghania')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, "ambition's cost")], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16db5e5b90>)], 'supertypes': [(1, ['sor', 'dectioy'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'target player sacrifices a creature.')]}
{'subtypes': [(4, ['ar'])], 'pt': [(6, '{^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16db47a488>)], 'name': [(0, 'shifting borders')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16db494b90>)], 'other': [(9, '@ deals &^ damage to target creature or player.\\when a spell or ability an opponent controls permanent or stronch or blue spell.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{RR^^^}'), (10, 'destroy target land. if that land was legendary, its controller sacrifices another land.')], 'subtypes': [(4, ['sopcrer'])], 'supertypes': [(1, ['in'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16db04c290>)], 'name': [(0, 'seifting stonm')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dae2c050>)], 'other': [(9, 'converge ~ gain control of target creature has on. exile the top card of your library, then put them back in any order.]')], 'name': [(0, 'balancing act')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16dab96ab8>)], 'other': [(9, "destroy target artifact. = destroy target nonblack creature. it can't be regenerated. = destroy target land.]")], 'name': [(0, "predator's rappo")], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16daaf4b90>)], 'other': [(9, 'distribute any number of creatures.\\@ deals &^^^^^ damage to target creature or player.')], 'name': [(0, 'might of old krosismans')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16daa5d3b0>)], 'name': [(0, 'strength in numbers')], 'text': [(8, <manalib.Manatext instance at 0x7f16daa5d4d0>)], 'rarity': [(5, 'N')], 'other': [(9, "sicker and green creatures this turn, you may pay {UU} rather than pay @'s mana cost.\\exile any numbers fermeing the top. all creatures blocking that spell.")], 'types': [(2, ['instant'])]}
{'name': [(0, 'deliciance')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16da9c3200>)], 'supertypes': [(1, ['art'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell. its controller loses &^^^ life.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16da66e4d0>)], 'other': [(9, 'search your library for a basic land card and put it onto the battlefield. then shuffle your library.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'name': [(0, "all sun's throos")], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16da46b320>)], 'name': [(0, 'crop rotation')], 'text': [(8, <manalib.Manatext instance at 0x7f16da46b440>)], 'rarity': [(5, 'N')], 'other': [(9, "if an opponent controls more lands than target opponent's graveyard, hand, and library for any number of cards with that name and exile them. then that player shuffles his or her library.")], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'pt': [(6, '{^^UUUU^}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16da2f9c20>)], 'name': [(0, 'mass appeal')], 'types': [(2, ['instant'])]}
{'other': [(9, '{^RR^^RR}'), (10, '@ deals &^^^^ damage to target player and you gain &^^^^^^^^^^^^^^^^^^^^ life.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16da098c20>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d9e76710>)], 'name': [(0, 'serene offering')], 'text': [(8, <manalib.Manatext instance at 0x7f16d9e76830>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['instant'])]}
{'other': [(9, '{GG^^}'), (10, 'attacking creatures you control get +&^/+& until end of turn if you control a creature with power &^^^^ or greater.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9db1b00>)], 'name': [(0, 'song the brasp')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9dbe440>)], 'other': [(9, '@ deals &^^^^ damage divided as you choose among one, two, or three target creatures and each player.\\rebound')], 'name': [(0, 'death by draghania')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d9a825a8>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'subtypes': [(4, ['A'])], 'pt': [(6, '{^^^UUUU^}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d9a129e0>)], 'name': [(0, 'flame fated ass')], 'types': [(2, ['soucher'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d97bf200>)], 'name': [(0, 'stream of consciousne')], 'text': [(8, <manalib.Manatext instance at 0x7f16d97bf320>)], 'rarity': [(5, 'A')], 'other': [(9, '\\search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB^^}'), (10, 'return target creature card from your graveyard to your hand.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d95ab0e0>)], 'name': [(0, 'spite of mogg')], 'types': [(2, ['sorvery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d9568170>)], 'other': [(9, 'wither \\@ deals &^^^ damage to target creature or player.')], 'name': [(0, 'touch of near')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'streech')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d9488830>)], 'supertypes': [(1, ['ing', 'that'])], 'loyalty': [(3, 'instant')], 'other': [(9, '@ deals &^^ damage to target creature or player.')]}
{'name': [(0, 'vicoophe')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16d943a908>)], 'supertypes': [(1, ['eacuntion'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'destroy all islands.')]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8e80248>)], 'name': [(0, 'seifting stonm')], 'pt': [(6, '{UU}')]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d8c5e9e0>)], 'name': [(0, "propeter's scomm")], 'pt': [(6, '{UU}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d8bfb488>)], 'name': [(0, 'army of the damnat')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8bede60>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'aspen the reir')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d899b518>)], 'name': [(0, 'fire a mounnyy')], 'pt': [(6, '{RR}')]}
{'subtypes': [(4, ['A'])], 'pt': [(6, '{^BB}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d881ebd8>)], 'name': [(0, 'withering mitay')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d8783d40>)], 'other': [(9, 'you may cast @ as though it had flash if you pay {^^} more to cast it. \\@ deals X damage to each creature and each player.')], 'name': [(0, 'bestial venomanio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d86046c8>)], 'name': [(0, 'vengeance')], 'text': [(8, <manalib.Manatext instance at 0x7f16d86047e8>)], 'rarity': [(5, 'A')], 'other': [(9, "\\put target nonland permanent on top of its owner's library.\\madness {BB}")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{UUUU}'), (10, "return target permanent to its owner's hand. then that player gains control of up to three tire or black creatures.")], 'subtypes': [(4, ['ancant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d85b55f0>)], 'name': [(0, 'flame fusillad')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d83e82d8>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'flames of the night')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d813d128>)], 'other': [(9, "return target nonland permanent you don't control to its owner's hand.")], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['surat'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d810be18>)], 'other': [(9, '@ deals &^^ damage to target creature or player.\\madness {RR}')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['A'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d7ce1bd8>)], 'name': [(0, "all sun's growth")], 'pt': [(6, '{^UU^^UU^}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d7a14b90>)], 'other': [(10, '{^RR}'), (11, '@ deals &^^^ damage to target creature or player and you gain &^^^^ life.')], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d7973f80>)], 'name': [(0, 'entering')], 'text': [(8, <manalib.Manatext instance at 0x7f16d79780e0>)], 'rarity': [(5, 'A')], 'other': [(9, '\\return the top card of your library. put one of those cards into your hand and the rest on the bottom of your library in any order.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d776fcf8>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'choose an opponent. you and that player each draw three cards.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'cryocister that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d761b1b8>)], 'supertypes': [(1, ['sarce'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^} plus an additional {^^} for each card named @ in each graveyard.')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d7459050>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'target creature gets -&^^^/-&^^^ until end of turn.\\cycling {^^} \\when you cycle @, you may put four +&^/+&^ counters on it.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d746dd40>)], 'name': [(0, 'simplify')], 'text': [(8, <manalib.Manatext instance at 0x7f16d746de60>)], 'rarity': [(5, 'A')], 'other': [(9, "the next time target permanent to its owner's hand unless that player pays {^^}.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return the top four cards of your library, then put them back in any order. = look at the top five cards of his or her library, then put the card on top of it.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d73c6c20>)], 'name': [(0, 'recoup')], 'types': [(2, ['soucher'])]}
{'other': [(9, '{BB^}'), (10, 'destroy target creature if it has the least power and toughness onto the battlefield. sacrifice that creature at the beginning of the next end step.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d72c1b48>)], 'name': [(0, 'devouring rasp')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'flame fusillad')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d7244e60>)], 'other': [(9, 'target creature gets +&^^^/+& and gains lifelink until end of turn.')], 'subtypes': [(4, ['ancant'])], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^^BB^}'), (10, 'return up to two target creature cards from your graveyard to your hand.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d706eea8>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'dise'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6edeb00>)], 'other': [(9, 'countertype % poison\\target player loses &^ life and you gain &^ life.')], 'name': [(0, 'balancing act')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6e9cfc8>)], 'other': [(9, 'put two &^/&^ white soldier creature tokens onto the battlefield.')], 'name': [(0, "win's enchangmant")], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'subtypes': [(4, ['surcert'])], 'pt': [(6, 'an')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6d7e128>)], 'name': [(0, 'shivan meteor')], 'types': [(2, ['inst'])]}
{'subtypes': [(4, ['an'])], 'pt': [(6, '{^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6c08cb0>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d6c2c518>)], 'name': [(0, 'flusterstorm')], 'text': [(8, <manalib.Manatext instance at 0x7f16d6c2c638>)], 'rarity': [(5, 'N')], 'other': [(9, '\\cast that card from it. you gain life equal to the damage dealt, but not more than the amount of {BB} spent on X, the player chooses an artifact card from it. that player discards that card.\\dredge &^^')], 'types': [(2, ['instant'])]}
{'other': [(9, '{WW}'), (10, 'target creature gets +&^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6989098>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'divery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d69a1248>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d696e1b8>)], 'name': [(0, 'memory lapse')], 'text': [(8, <manalib.Manatext instance at 0x7f16d696e2d8>)], 'rarity': [(5, 'O')], 'other': [(10, 'instant'), (13, 'O'), (15, '{WW^}'), (16, 'cast @ only during combat after blockers are declared.\\target unblocked attacking creature becomes blocked.')], 'types': [(2, ['instant'])]}
{'other': [(9, '{WW^WW^^^}'), (10, 'put two &^/&^ white soldier creature tokens onto the battlefield.\\storm')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6929d88>)], 'name': [(0, 'shaded return')], 'types': [(2, ['soures', 'an', 'artifact'])]}
{'pt': [(6, '{RRRR^}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d6663050>)], 'name': [(0, 'shifting breath')], 'types': [(2, ['norane'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d6511c20>)], 'other': [(9, "destroy target nonbasic land you don't control and target nonbasic land of an opponent's choice you don't control.\\overload {^RR^^RRRR}")], 'name': [(0, 'imperial sest')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d5a20ea8>)], 'other': [(9, 'destroy target creature with flying.')], 'name': [(0, 'marnic connait')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{^^UU}'), (10, 'draw three cards, then discard three cards at random.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d594a488>)], 'name': [(0, 'temporal eddlifieve')], 'types': [(2, ['ant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d589bcb0>)], 'other': [(9, 'target creature gets +&^^^/+& and gains lifelink until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d581ebd8>)], 'name': [(0, 'prouph')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d57e71b8>)], 'other': [(9, "as an additional cost to cast @, sacrifice a creature.\\add to your mana pool an amount of {BB} equal to the sacrificed creature's power to the vatame.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'subtypes': [(4, ['ar'])], 'pt': [(6, '{^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16d5435b90>)], 'name': [(0, 'shifting borders')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d51a3368>)], 'cost': [(7, <manalib.Manacost instance at 0x7f16d51a3248>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d503f440>)], 'other': [(9, 'target player reveals his or her hand. you choose a card from it with converted mana cost &^^^ or greater and exile that card.')], 'name': [(0, 'wind shit')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d49c2128>)], 'other': [(9, 'exile all cards from all graveyards.')], 'name': [(0, 'savage puncrafio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d452f638>)], 'name': [(0, 'might of old kroside')], 'text': [(8, <manalib.Manatext instance at 0x7f16d452f758>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d44459e0>)], 'other': [(9, '@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d41f5a28>)], 'name': [(0, 'ashen to dust')], 'text': [(8, <manalib.Manatext instance at 0x7f16d41f5b48>)], 'rarity': [(5, 'O')], 'other': [(9, "sourn, creatures can't block this turn.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{GG^^^^}'), (10, 'put two &^^/&^^^ green centaur creature tokens onto the battlefield.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3f96f38>)], 'name': [(0, 'recoup')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3f52908>)], 'other': [(9, 'choose a color. white creatures you control also gain first strike until end of turn.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d3e87170>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16d3e87290>)], 'rarity': [(5, 'A')], 'other': [(9, "return all nonland permanents to their owners' hands.")], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB}'), (10, 'destroy target nonblack creature if its toughness is legat creature defendigh that wall.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3de5ef0>)], 'name': [(0, 'mudgle the middess')], 'types': [(2, ['souch'])]}
{'other': [(9, '{WW}'), (10, 'put up to three target creatures controlled by the same player. exile one of those creatures that shuffle it on top of his or her library.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3cb3ea8>)], 'name': [(0, 'fight tempy')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^^^RR}'), (10, '@ deals &^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets +&^^^^/+&^^^^ until end of turn instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3af9fc8>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'other': [(9, '{BB}'), (10, 'target creature gets -&^/-&^ until end of turn.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3902128>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'dise'])]}
{'name': [(0, 'frush for mort')], 'pt': [(6, 'ant')], 'text': [(8, <manalib.Manatext instance at 0x7f16d390db90>)], 'rarity': [(5, 'O')], 'other': [(9, 'uncast target spell. its controller discards a card.')], 'types': [(2, ['inst'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d3850ea8>)], 'other': [(9, "switch target creature's power and toughness until end of turn.\\draw a card.")], 'name': [(0, "predator's rappo")], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{^^^RR}'), (10, '@ deals &^^^ damage to target creature or player.\\suspend &^^~{^RRRR}')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3876170>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'other': [(9, '{^^BB^}'), (10, "return target creature card from your graveyard to the battlefield. if it's your turn, scry &^^.")], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d36cc368>)], 'name': [(0, 'contostic mught')], 'types': [(2, ['shat'])]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d3223998>)], 'name': [(0, 'might of onk')], 'pt': [(6, '{UU}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d3223ea8>)], 'name': [(0, 'recollect')], 'text': [(8, <manalib.Manatext instance at 0x7f16d3223fc8>)], 'rarity': [(5, 'N')], 'other': [(9, 'when that creature dies this turn, you gain life equal to the number of creatures you control in excess of the number of creatures target opponent controls.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2dadef0>)], 'other': [(9, '@ deals &^^ damage to target creature or player.\\flashback {^^^RR^^}')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'other': [(9, '{WW^}'), (10, 'destroy target enchantment.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2d53830>)], 'name': [(0, 'wind shuff')], 'types': [(2, ['sorcryare'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2a2ea28>)], 'name': [(0, 'call the shy')], 'pt': [(6, '{^^UU}')]}
{'subtypes': [(4, ['A'])], 'supertypes': [(1, ['instance'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2924368>)], 'name': [(0, "spirit'")], 'pt': [(6, '{UUUU^^^}')]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2924950>)], 'name': [(0, 'seifting stonm')], 'pt': [(6, '{^RR^^}')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2883d40>)], 'other': [(10, '{^WW}'), (11, 'tap target creature.\\draw a card.')], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'name': [(0, 'spinal embruce')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16d285d6c8>)], 'supertypes': [(1, ['sion'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'tap target untapped creature. it deals damage equal to its power to target creature or player.]')]}
{'subtypes': [(4, ['arcane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d2476bd8>)], 'name': [(0, 'death denied')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'other': [(9, 'A'), (11, '{UU^UU^^}'), (12, 'uncast target nonblack creatures.\\draw a card.')], 'pt': [(6, 'tant')], 'name': [(0, 'spectral procession')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'ir')]}
{'other': [(9, '{^^BB^}'), (10, 'destroy target nonblack creature and red card in it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d22e07e8>)], 'name': [(0, 'scrap in spiral')], 'types': [(2, ['ssacred', 'activatting'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d2015bd8>)], 'other': [(9, 'target player gains control of up them into your hand and the rest into your graveyard.')], 'name': [(0, 'time stretch')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{BB^^}'), (10, 'put three +&^/+&^ counters on it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1fc68c0>)], 'name': [(0, 'dragon in')], 'types': [(2, ['intt'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1fe2d40>)], 'other': [(9, '\\target creature gets +&^^/+& and gains first strike until end of turn.')], 'name': [(0, 'flames of the forgo')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'dight')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16d343bb00>)], 'supertypes': [(1, ['of', 'strike'])], 'loyalty': [(3, 'instant')], 'other': [(9, "put target creature on top of its owner's library.")]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d1c416c8>)], 'other': [(9, "creatures without flying can't block this turn. \\draw a card.")], 'name': [(0, 'wild guess')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'planar of growth')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d1a5da28>)], 'supertypes': [(1, ['sordery'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "look at the top three cards of target player's library, then put them back in any order.]\\entwine {BB}")]}
{'name': [(0, 'archangla re')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d1a10950>)], 'supertypes': [(1, ['inveat'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of creatures target opponent controls.')]}
{'other': [(9, '{RR}'), (10, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d190b638>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'subtypes': [(4, ['arcane'])], 'other': [(9, 'target creature you control fights target creature an opponent controls.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'name': [(0, 'devouring rage')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16d1925050>)]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d189bfc8>)], 'name': [(0, 'dispel')], 'text': [(8, <manalib.Manatext instance at 0x7f16d189d128>)], 'rarity': [(5, 'O')], 'other': [(10, 'x'), (12, '{RRXXRR}'), (13, 'destroy X target nonblack creatures. @ deals X plus &^^ damage to that creature instead if seven or more cards are in your graveyard.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d15da5f0>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gains shadow until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{^GG^}'), (10, 'destroy all enchantments.')], 'subtypes': [(4, ['sorcery'])], 'supertypes': [(1, ['in'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1493d88>)], 'name': [(0, 'shifting stonm')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d1348638>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'other': [(9, '{WW^}'), (10, 'destroy target enchantment.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d1329d40>)], 'name': [(0, 'starftred the deat')], 'types': [(2, ['orsare'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d11314d0>)], 'other': [(9, 'search your library for up to two forest cards and put them onto the battlefield tapped. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'spic in fear')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16d113e680>)], 'other': [(9, "put target nonland permanent on top of its owner's library.")], 'name': [(0, 'fall of the gor')], 'pt': [(6, 'N')], 'loyalty': [(3, 'irstert')]}
{'subtypes': [(4, ['trap'])], 'other': [(9, "if an opponent cast a creature spell this turn, you may pay {UU} rather than pay @'s mana cost.\\exile any numbers fermanent cards with converted mana cost &^^^^ or less. it can't be regenerated.")], 'name': [(0, 'inferno trap')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16d1100a28>)]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16d0f84dd0>)], 'name': [(0, 'day of judgment')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'funge of ')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d0afd0e0>)], 'supertypes': [(1, ['isture'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^}.\\storm')]}
{'other': [(9, '{^^^WW}'), (10, '[&^ = creatures you control get +&^/+&^ until end of turn. = untap all creatures you control.]\\entwine {^WW}')], 'subtypes': [(4, ['instant'])], 'supertypes': [(1, ['sor'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d09513f8>)], 'name': [(0, 'magnetic intend')]}
{'name': [(0, 'profe of p')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d07e5638>)], 'supertypes': [(1, ['arve'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'destroy target land.\\cycling {^^}')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16d0604e60>)], 'rarity': [(5, 'N')], 'other': [(9, 'all creatures get -&^^/-&^^ until end of turn.\\spell mastery ~ if there are two or more instant and/or sorcery cards in your graveyard, add {BBBBBB} to your mana pool.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d02d3098>)], 'name': [(0, "propeter's sy")], 'pt': [(6, '{^UU}')]}
{'name': [(0, 'stroughther that')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16d01c8ab8>)], 'supertypes': [(1, ['cupnation'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'put two &^/&^ green spider creature tokens onto the battlefield.')]}
{'other': [(10, 'O'), (12, '{RR^}'), (13, '@ deals damage to target creature equal to twice the number of mountains returned this way.')], 'subtypes': [(4, ['srclockr'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16d01fba28>)], 'name': [(0, 'conjusered plogien')], 'types': [(2, ['sorcare'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cff747a0>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors of mana spent to cast @.\\draw a card.')], 'name': [(0, 'shifting stonger')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfd81488>)], 'other': [(9, 'put two &^/&^ green squirie creature tokens onto the battlefield. if @ was kicked, that creature gets +&^^^^^^/+&^^^^^^ until end of turn.')], 'name': [(0, 'flames of the gorgo')], 'pt': [(6, 'N')], 'loyalty': [(3, 'irstert')]}
{'subtypes': [(4, ['arcane'])], 'other': [(9, 'search your library for up to two creature cards, reveal those cards and put them into your hand. then shuffle your library.')], 'name': [(0, 'devouring rage')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16cfc1cf80>)]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cfb9e908>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'subtypes': [(4, ['acce'])], 'other': [(10, '{RR^}'), (11, "@ deals &^^ damage to target creature or player. if a creature would deal combat damage to a creature this turn, it ent ond an opponent can' a land card from his or her hand onto the battlefield.")], 'name': [(0, 'scorching sear')], 'loyalty': [(3, 's')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cfaf2f80>)], 'other': [(9, 'put X -&^/-&^ counters on each of X target creatures and/or players.')], 'name': [(0, 'savage puncrafio')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cf998f80>)], 'name': [(0, 'soul feast')], 'text': [(8, <manalib.Manatext instance at 0x7f16cf99a0e0>)], 'rarity': [(5, 'N')], 'other': [(9, "\\sacrifice a creature rather than pay @'s mana cost.\\creatures you control get +&^/+& until end of turn.")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf8cc4d0>)], 'other': [(9, 'return target creature card from your graveyard to your hand.\\draw a card.')], 'name': [(0, 'prenal of phortho')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf452710>)], 'other': [(9, '[&^ = destroy target wall creature. = destroy target creature if it has the least power and toughness onto the battlefield.]')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'brain pry')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cf460f38>)], 'supertypes': [(1, ["'sscelverge"])], 'loyalty': [(3, 'instant')], 'other': [(9, 'destroy target enchantment. you gain life equal to its toughness.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf415128>)], 'other': [(9, 'draw three cards.')], 'name': [(0, 'defenging palano')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cf3324d0>)], 'name': [(0, 'silk net')], 'text': [(8, <manalib.Manatext instance at 0x7f16cf3325f0>)], 'rarity': [(5, 'O')], 'other': [(10, 'instant')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf23ed88>)], 'name': [(0, 'call the shy')], 'pt': [(6, '{RR^}')]}
{'other': [(9, '{UUWW}'), (10, 'target creature gets -&^^^/-&^ until end of turn.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf1a97a0>)], 'name': [(0, 'shifting voil')], 'types': [(2, ['sorcerred'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cf0cde60>)], 'other': [(9, '@ deals &^ damage to target creature or player.\\flashback {^^^RR^}')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['s'])], 'pt': [(6, '{^RR^^}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cf064098>)], 'name': [(0, 'erranic exil')], 'types': [(2, ['sorcergen'])]}
{'supertypes': [(1, ['inctant'])], 'other': [(9, 'stupped that player pays {^^} players the seling controller if {GG} was spent to cast @. exile @ from your graveyard to your hand.')], 'name': [(0, 'archangla re')], 'loyalty': [(3, 'sorcare')]}
{'other': [(9, '{^^UU}'), (10, "meloceare ~ if an opponent had an artifact or creature card in an opponent's graveyard and the rest on the bottom of your library in any order.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cee1a7e8>)], 'name': [(0, 'burn at the stark')], 'types': [(2, ['sorcerre'])]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cee3c098>)], 'name': [(0, 'might of onk')], 'pt': [(6, '{BB}')]}
{'name': [(0, 'stronghold nig')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16ced51c20>)], 'supertypes': [(1, ['tunce'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "return one or two target creatures to their owners' hands.")]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cea33e60>)], 'name': [(0, 'dismap chanm')], 'pt': [(6, '{GG}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cea5be60>)], 'name': [(0, 'withering force')], 'text': [(8, <manalib.Manatext instance at 0x7f16cea5bf80>)], 'rarity': [(5, 'A')], 'other': [(10, 'sorcery'), (13, 'O'), (15, '{BB^}'), (16, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors that creature and exile them. then that player shuffles his or her library.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce7b3b00>)], 'name': [(0, 'redeem')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce7b3c20>)], 'rarity': [(5, 'O')], 'other': [(9, "sorcery all creatures that aren't of a type chosen this way. they can't be regenerated.")], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['an'])], 'pt': [(6, '{^^^RRRR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce6ce758>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'subtypes': [(4, ['A'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce56c5f0>)], 'name': [(0, "artificer's epipalation")], 'pt': [(6, '{WW^^WW^}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce56f830>)], 'name': [(0, 'mass appeal')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce56f950>)], 'rarity': [(5, 'N')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce4a4fc8>)], 'name': [(0, "predator's rapport")], 'text': [(8, <manalib.Manatext instance at 0x7f16ce4a6128>)], 'rarity': [(5, 'O')], 'other': [(9, 'put two &^/&^ red goblin creature tokens onto the battlefield.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce3fd170>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gains flying until end of turn.\\sacrifice a spirit or arcanent.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'pt': [(6, '{^^^^^^BB}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16ce36fd40>)], 'name': [(0, 'chain of soul')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'Nr')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ce1cf680>)], 'other': [(9, "for each tapped nonland permanent that player controls can't block this turn. \\draw a card.")], 'name': [(0, "all sun's throos")], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ce18c998>)], 'rarity': [(5, 'N')], 'other': [(9, "all creatures get -&^^/-&^^ until end of turn. whenever a creature dies this turn, you gain life equal to that creature's toughness.")], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16ce169c20>)], 'name': [(0, 'winter sky')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'subtypes': [(4, ['arcane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdfc4248>)], 'name': [(0, 'death denied')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'other': [(9, '{UU}'), (10, "return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cdf1b488>)], 'name': [(0, 'prouph')], 'types': [(2, ['souch'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cde8d248>)], 'other': [(10, '{UU}'), (11, "look at target opponent's hand and choose a card from it. put it onto the battlefield. if you do, that player discards that card.")], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16cde5eb90>)], 'rarity': [(5, 'N')], 'other': [(9, 'destroy target creature with flying.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cda0ca70>)], 'name': [(0, 'decree of pain')], 'text': [(8, <manalib.Manatext instance at 0x7f16cda0cb90>)], 'rarity': [(5, 'A')], 'other': [(9, 'draw three cards.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'spitener')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16cd396488>)], 'supertypes': [(1, ['sire'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'put five &^/&^ white soldier creature tokens onto the battlefield. it has "sacrifice this creature: add {^} to your mana pool."')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cd265128>)], 'other': [(9, "return target nonland permanent you control and all nonland permanent with converted mana cost among and that spell's controller instead if a creature died this turn.")], 'name': [(0, "chainer's edict")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16ccd22128>)], 'other': [(9, 'destroy target nonblack creature if its toughness is less than or equal to the number of colors of mana spent to cast @.\\draw a card.')], 'name': [(0, 'wind shit')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccc12ab8>)], 'name': [(0, 'mana cet')], 'types': [(2, ['instane'])]}
{'other': [(9, '{UU}'), (10, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ccbb84d0>)], 'name': [(0, 'flame of spiral')], 'types': [(2, ['shadeddes'])]}
{'other': [(9, '{^^^RR^RR^}'), (10, 'destroy all nonbasic lands. for each land destroyed this way, its controller may search his or her library for a fore to ifstail cards and put them onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cca9fb48>)], 'name': [(0, 'prouph')], 'types': [(2, ['souc', 'the', 'voud'])]}
{'subtypes': [(4, ['an'])], 'pt': [(6, '{^^^GG}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc874680>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc7c0758>)], 'other': [(9, "uncast target spell that's the second spell cast this turn.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cc6ac290>)], 'name': [(0, 'consign to dust')], 'text': [(8, <manalib.Manatext instance at 0x7f16cc6ac3b0>)], 'rarity': [(5, 'N')], 'other': [(9, "\\wan an opponent's graveyard or hour hibrary for a card and put that card into your hand. then shuffle your library.\\draw a card.")], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cc605ef0>)], 'other': [(9, "@ deals &^^^ damage to target creature or player. you gain life equal to the damage dealt, but not more than the amount of {BB} spent on X, the player can't activate this ability on the attacking ottan hes one.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'irstant')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc639f38>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'other': [(9, 'Xrexture that creature gets +&^^^/+& and gains trample until end of turn.')], 'name': [(0, 'fireball')], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU^}'), (10, 'uncast target spell unless its controller pays {^^^}.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cc2beea8>)], 'name': [(0, 'burn at the stark')], 'types': [(2, ['sorcerre'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16cbeec4d0>)], 'rarity': [(5, 'N')], 'other': [(10, '{^RR^^}'), (11, 'each target artifact sacrifices a land. \\prevent all combat damage that would be dealt this turn by creatures with flying.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16cbd8eab8>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['ar'])], 'pt': [(6, '{^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cbc82d40>)], 'name': [(0, 'shifting borders')], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cbafd518>)], 'name': [(0, 'flame fusillad~')], 'types': [(2, ['incant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb9e8488>)], 'other': [(9, "return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'name': [(0, 'searing stank')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['tO'])], 'pt': [(6, '{^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb9aae18>)], 'name': [(0, 'crathing bolt')], 'types': [(2, ['instant'])]}
{'other': [(9, 'XXXXXXXXBBBBBBBBBBBBUU}'), (10, "exchange WWpur X creature cards from an opponent's graveyard onto the battlefield.")], 'name': [(0, 'fireball')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb914e60>)], 'name': [(0, 'call the shy')], 'pt': [(6, '{^BB}')]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cb8c4b90>)], 'name': [(0, 'seifting stonm')], 'pt': [(6, '{GG}')]}
{'other': [(9, '{UU}'), (10, 'look at target opponent cast it croated this turn.\\cycling {^^}')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd8db0e0>)], 'name': [(0, 'canopy clutch')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'election')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16cd8e61b8>)], 'supertypes': [(1, ['imsurning'])], 'loyalty': [(3, 'instant')], 'other': [(9, "return target nonland permanent to its owner's hand. if @ was kicked, it has splying or as will no white if you control a creature with power &^^^^ or greater.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cb78b5f0>)], 'name': [(0, 'reap intellect')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb78b710>)], 'rarity': [(5, 'A')], 'other': [(9, "\\destroy that creature at the beginning of the next turn's upkeep.")], 'types': [(2, ['sorcery'])]}
{'subtypes': [(4, ['ar'])], 'pt': [(6, '{^^^^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16cd7536c8>)], 'name': [(0, 'caraban might')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb518950>)], 'other': [(10, '{^RR}'), (11, "cast @ only if you control a creature with power &^^^^ or greater. creatures destroyed this way can't be regenerated.")], 'name': [(0, 'perish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'instant')]}
{'name': [(0, 'devout intond')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb4d2908>)], 'supertypes': [(1, ['stray'])], 'loyalty': [(3, 'irstert')], 'other': [(9, 'choose any number of target players each gain life equal to the number of creatures target opponent controls.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb382878>)], 'other': [(9, '@ deals &^^ damage to target creature or player.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb255e18>)], 'other': [(9, '@ deals &^^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets +&^^^^/+&^^^^ until end of turn instead if a creature died this turn.')], 'name': [(0, 'cauldron enchance')], 'pt': [(6, 'O')], 'loyalty': [(3, 'sorcery')]}
{'name': [(0, 'recoup')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cb1499e0>)], 'other': [(9, '@ deals &^^ damage to target creature or player.')], 'subtypes': [(4, ['sorcerre'])], 'types': [(2, ['souchlall'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16cb0b4170>)], 'other': [(9, "return target nonland permanent you control and all nonland permanent with converted mana cost among and the discard an opponent's graveyard, hand, and library for any number of cards with the same name as that spell and exile them. then that player shuffles his or her library.")], 'name': [(0, 'stone hor')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16cae74518>)], 'name': [(0, 'rain of salt')], 'text': [(8, <manalib.Manatext instance at 0x7f16cae74638>)], 'rarity': [(5, 'A')], 'other': [(9, '\\draw a card for each creature target player controls.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'inferno trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cacb3d40>)], 'other': [(9, 'if an opponent controls an island and you may search your library for a card and put that card into your hand. then shuffle your library.')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'fire trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16cab50200>)], 'other': [(9, 'draw two cards, then discard two cards.\\uncast target spell.')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16caabe950>)], 'other': [(9, 'searching a creature type of your choice from your graveyard to your hand.')], 'name': [(0, 'fall of the gor')], 'pt': [(6, 'A')], 'loyalty': [(3, 'orcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16caa32f80>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16caa380e0>)], 'rarity': [(5, 'O')], 'other': [(9, '@ deals &^^^^^ dramage to that creature instead.')], 'types': [(2, ['sorcery'])]}
{'other': [(9, '{^RR}'), (10, '@ deals &^ damage to target creature or player.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca9eeb00>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca943ab8>)], 'rarity': [(5, 'N')], 'other': [(9, 'each player loses &^ life for each creature he or she controls.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'searing scomm')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca7f3ef0>)], 'supertypes': [(1, ['sirce'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'you may exile two blue creature cards from your graveyard to your hand.')]}
{'other': [(10, '{GG^}'), (11, 'destroy target creature with flying. its controller gets a % counter.')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca49ecf8>)], 'rarity': [(5, 'instant')], 'name': [(0, 'worldphepeat')], 'loyalty': [(3, 'srrerouts')]}
{'subtypes': [(4, ['O'])], 'supertypes': [(1, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca3a7758>)], 'name': [(0, 'distortic ')], 'pt': [(6, '{UU^}')]}
{'name': [(0, 'inferno trap')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca2743f8>)], 'other': [(9, 'target creature gets +&^^/+& and gains first strike until end of turn.\\overload {UU^^}')], 'subtypes': [(4, ['trap'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{UU^}'), (10, 'uncast target spell unless its controller pays {^}. draw a card for each time @ was kicked.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16ca22b0e0>)], 'name': [(0, "all sun's zonit")], 'types': [(2, ['numana'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16ca048ef0>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9f83cf8>)], 'other': [(9, 'convoke \\target creature gets +&^^/+& and gains first strike until end of turn.')], 'name': [(0, 'reaping the aewhs')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c9f2c1b8>)], 'name': [(0, 'lightning blow')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9f2c2d8>)], 'rarity': [(5, 'O')], 'other': [(9, 'when you cycle @, it deals &^^^ damage to that creature or player instead if you control a wourn frem instead if seven or more cards are in your graveyard.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9e4e170>)], 'rarity': [(5, 'N')], 'other': [(10, '{UU}'), (11, 'target creature gets -&^^^/-& until end of turn.\\draw a card.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{RR}'), (10, 'draw two cards, then discard three cards at random.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c9de3320>)], 'name': [(0, 'beckon app')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c9bc1290>)], 'other': [(9, "@ deals &^^ damage to each creature and each player. if you control a white permanent, return @ to its owner's hand.")], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['an'])], 'pt': [(6, '{^^^RR}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c99b59e0>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c97bb758>)], 'name': [(0, 'seize the day')], 'text': [(8, <manalib.Manatext instance at 0x7f16c97bb878>)], 'rarity': [(5, 'A')], 'other': [(9, 'put two &^/&^ green insect creature tokens onto the battlefield.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c90de488>)], 'name': [(0, 'seismic spike')], 'text': [(8, <manalib.Manatext instance at 0x7f16c90de5a8>)], 'rarity': [(5, 'O')], 'other': [(9, 'instant'), (12, 'O'), (14, '{WW^}'), (15, 'choose a creature type. all creatures of the creature type of your choice until end of turn.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c9005f38>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^}'), (11, 'target player sacrifices a creature.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'dismic shud')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8f64e18>)], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^^^}.\\draw a card.')], 'types': [(2, ['sorcryor'])]}
{'other': [(9, '{RR}'), (10, '@ deals &^ damage to target creature or player. if a creature would deal combat damage to a creature or player this turn, it deals double that damage to that creature or player instead if a creature died this turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8d89b48>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c8d128c0>)], 'name': [(0, 'pyroblast')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8d129e0>)], 'rarity': [(5, 'O')], 'other': [(9, "\\wan an opponent's control lose lefeared until end of turn. \\draw a card.")], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8c90950>)], 'name': [(0, 'call the shy')], 'pt': [(6, '{^BB^^}')]}
{'subtypes': [(4, ['arcane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8b49440>)], 'name': [(0, 'death denied')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'other': [(9, '{^UU^^}'), (10, 'createre tap each creature gets +&^^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8b2ee18>)], 'name': [(0, 'rout')], 'types': [(2, ['shack', 'and', 'vinit'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8a86878>)], 'other': [(9, 'put two &^/&^ green squirie creature tokens onto the battlefield.')], 'name': [(0, 'cranial extraction')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'subtypes': [(4, ['ingane'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c8a3f950>)], 'name': [(0, 'warning intented of anony')], 'types': [(2, ['orace'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c8987320>)], 'other': [(9, 'put two &^^/&^^ blue destal creature tokens onto the battlefield.\\storm')], 'name': [(0, 'conflux')], 'types': [(2, ['sorcery'])]}
{'name': [(0, "ass whuppin'")], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16c876f9e0>)], 'supertypes': [(1, ['sacry'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'flip a coin. if you win the flip, @ deals X damage to target creature or player.')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c86333f8>)], 'name': [(0, 'flame of souls')], 'text': [(8, <manalib.Manatext instance at 0x7f16c8633518>)], 'rarity': [(5, 'O')], 'other': [(9, 'serce the black shelcorder creatures that player controls.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c81b4680>)], 'name': [(0, 'reality strobe')], 'text': [(8, <manalib.Manatext instance at 0x7f16c81b47a0>)], 'rarity': [(5, 'O')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c813ad40>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB^^}'), (11, 'target creature gets +&^^/+& and gains first strike until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, 'brain pry')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16c7b60320>)], 'supertypes': [(1, ["'s", 'revellition'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'convoke \\return X target creature cards from your graveyard to your hand.')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7a55440>)], 'other': [(10, '{RR}'), (11, '[&^ = uncast target spell unless its controller pays {^^}. clash with an opponent. if you win, that creature gets an additional +&^^/+&^^ and gains trample until end of turn.')], 'name': [(0, 'dismic shud')], 'types': [(2, ['sorcryor', 'damp'])], 'rarity': [(5, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c7760f80>)], 'other': [(9, 'destroy target creature an opponent controls and empty his or her mana pool.')], 'name': [(0, 'ancisn the ffe')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'subtypes': [(4, ['trap'])], 'other': [(9, 'if an opponent cast a blue spell this turn and onlyod card revealed this way, you put a &^^^/&^^^ green elephant creature token onto the battlefield. it has "sacrifice this creature: add {^} to your mana pool.')], 'name': [(0, 'fire trap')], 'types': [(2, ['instant'])], 'text': [(8, <manalib.Manatext instance at 0x7f16c76763f8>)]}
{'other': [(9, '{^UU^}'), (10, "return target creature to its owner's hand. then return target creature to its owner's hand. then return @ from your graveyard to your hand.")], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c757f518>)], 'name': [(0, "all suns'")], 'types': [(2, ['inder'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c759bc68>)], 'other': [(9, 'target creature gets +&^^/+&^^ until end of turn.\\splice onto arcane~sacrifice two manis.')], 'name': [(0, 'springic blessio')], 'pt': [(6, 'N')], 'loyalty': [(3, 'instant')]}
{'other': [(9, 'BBBB}'), (10, 'target creature gets -&^^^/-&^^^ until end of turn.\\cycling {^^}')], 'name': [(0, 'wild slash')], 'types': [(2, ['instant'])]}
{'other': [(9, '{GG}'), (10, 'put a +&^/+&^ counter on each of up to two target creatures.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c74a27a0>)], 'name': [(0, 'proupe')], 'types': [(2, ['sorce'])]}
{'name': [(0, 'slice in nunder')], 'pt': [(6, '{XXWW}')], 'supertypes': [(1, ['sire'])], 'loyalty': [(3, 'surnent')], 'rarity': [(5, 'O^')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c72c0128>)]}
{'name': [(0, 'brain pry')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7f16c72e28c0>)], 'supertypes': [(1, ["'ssched", 'might'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "return all permanents to their owners' hands.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c7195f38>)], 'name': [(0, 'seal')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'subtypes': [(4, ['s'])], 'supertypes': [(1, ['since'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c71ae8c0>)], 'name': [(0, 'dragon parm')], 'pt': [(6, '{UU}')]}
{'other': [(9, '{WW^^}'), (10, 'destroy target artifact or enchantment. if that permanent was blue or black, draw a card.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c70cf830>)], 'name': [(0, "all suns'")], 'types': [(2, ['inde'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c70775f0>)], 'name': [(0, 'midnight recovery')], 'text': [(8, <manalib.Manatext instance at 0x7f16c7077710>)], 'rarity': [(5, 'O')], 'other': [(9, "instant artifact basic land type among land cards from their graveyards, and you may spend white mana instant or sorcery card from an opponent's graveyard on top of his or her library.")], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'martial coup')], 'pt': [(6, 'clunger')], 'text': [(8, <manalib.Manatext instance at 0x7f16c6cb9560>)], 'rarity': [(5, 'or')], 'other': [(11, 'O'), (13, '{UU}'), (14, 'creatures you control gain trample until end of turn.')], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c6c40908>)], 'other': [(9, '@ deals &^ damage to target creature or player. scry &^.')], 'name': [(0, 'shattered crypt')], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c67c8170>)], 'other': [(9, 'choose two target creatures become black until end of turn. untap that creature. until end of turn, it gets +&^/+& and gains first strike until end of turn.')], 'name': [(0, 'flame with of mortio')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c64da680>)], 'name': [(0, 'recoving vaporing')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'other': [(9, '{^GG}'), (10, 'target creature gets +&^^^/+& and gains haste until end of turn.')], 'subtypes': [(4, ['sorcery'])], 'supertypes': [(1, ['in'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c644d758>)], 'name': [(0, 'shifting stonm')]}
{'name': [(0, 'flame fusillad')], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c63ffe18>)], 'other': [(9, "sacrifice a creature rather than pay @'s mana cost.\\creatures you control get +&^/+&^ until end of turn.")], 'subtypes': [(4, ['ancant'])], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c619e638>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'name': [(0, "ambition's comm")], 'pt': [(6, 'O')], 'text': [(8, <manalib.Manatext instance at 0x7f16c619edd0>)], 'supertypes': [(1, ['instant'])], 'loyalty': [(3, 'instant')], 'other': [(9, 'uncast target spell unless its controller pays {^^^}.\\draw a card.')]}
{'other': [(9, '{^UU}'), (10, 'uncast target spell unless its controller pays {^^} plus an additional {^^} for each card named @ in each graveyard.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c60bb200>)], 'name': [(0, 'proupe')], 'types': [(2, ['sorce'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c60e2320>)], 'name': [(0, 'metamorphose')], 'text': [(8, <manalib.Manatext instance at 0x7f16c60e2440>)], 'rarity': [(5, 'N')], 'other': [(9, '\\destroy target nonblack creature that entered the battlefield since your last turn ended.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c606f098>)], 'rarity': [(5, 'N')], 'other': [(10, '{BBBB^}'), (11, 'destroy target creature if it has the least power and toughness onto the battlefield.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c5eeb7e8>)], 'name': [(0, 'arm discovery')], 'text': [(8, <manalib.Manatext instance at 0x7f16c5eeb908>)], 'rarity': [(5, 'O')], 'other': [(9, "look at the top three cards of your library, then put them back in any order. you may choose new targets four combat. you gain life equal to that creature's power plus its toughness.")], 'types': [(2, ['sorcery'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5db8dd0>)], 'other': [(9, 'destroy all creatures target opponent controls.\\awaken &^^~{^WW^^^}')], 'name': [(0, 'arcination plowation')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'other': [(9, '{^^UUUU^}'), (10, 'uncast target spell.\\draw a card.')], 'subtypes': [(4, ['instant'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5c316c8>)], 'name': [(0, 'shaded from the deep')], 'types': [(2, ['souce'])]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c5b744d0>)], 'rarity': [(5, 'N')], 'other': [(10, '{BB}'), (11, 'target creature gets -&^^^/-&^^^^ until end of turn.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'other': [(9, '{^^RR}'), (10, '@ deals &^ damage to each creature and each player. if you cast this spell during your main phase, that creature gets -&^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^}.\\lus an &^ life.')], 'subtypes': [(4, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5a827a0>)], 'name': [(0, 'devouring misma')], 'types': [(2, ['inst'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c58300e0>)], 'other': [(10, '{UU}'), (11, 'look at the top three cards of target player\'s library, then put them back in any order. = return target nonland permanent to its owner\'s hand." then put the rest of the revealed cards into your library.')], 'name': [(0, 'false defeat')], 'types': [(2, ['sorcreat'])], 'rarity': [(5, 'orcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c5722830>)], 'other': [(9, 'destroy all nonbasic lands. for each land destroyed this way, its controller may search his or her library for a land card and put it onto the battlefield. then each player who searched his or her library this way shuffles it.')], 'name': [(0, 'strup to of the hor')], 'pt': [(6, 'A')], 'loyalty': [(3, 'sorcery')]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c50ed560>)], 'other': [(9, 'uncast target spell unless its controller pays {^} for each blue permanent you control.')], 'name': [(0, "predator's rupporo")], 'pt': [(6, 'O')], 'loyalty': [(3, 'instant')]}
{'name': [(0, 'death denied')], 'text': [(8, <manalib.Manatext instance at 0x7f16c50735a8>)], 'rarity': [(5, 'N')], 'other': [(9, 'destroy X target nonblack creatures. @ deals X plus &^^^ damage to you, where X is the number of colors of mana spent to cast @.')], 'subtypes': [(4, ['arcane'])], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['O'])], 'pt': [(6, '{XXBB}')], 'cost': [(7, <manalib.Manacost instance at 0x7f16c5033bd8>)], 'name': [(0, 'reap intollyy')], 'types': [(2, ['instance'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c4ffc200>)], 'other': [(9, 'search your library for up to three basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. then shuffle your library.')], 'name': [(0, "all sun's throos")], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
{'cost': [(7, <manalib.Manacost instance at 0x7f16c4fc8638>)], 'name': [(0, 'reality shift')], 'text': [(8, <manalib.Manatext instance at 0x7f16c4fc8758>)], 'rarity': [(5, 'N')], 'other': [(9, '\\cast @ ontom bl creature cards with the same name as that creature get -&^^^/-&^^^ until end of turn.')], 'types': [(2, ['instant'])]}
{'text': [(8, <manalib.Manatext instance at 0x7f16c4caae60>)], 'other': [(9, 'put two &^/&^ green saproling creature tokens onto the battlefield under your control.')], 'name': [(0, 'sanity grinding sear')], 'pt': [(6, 'N')], 'loyalty': [(3, 'sorcery')]}
====================
---
By the way, the big machine is back up and running, and I had an opportunity to run some style transfer stuff just for fun last night. I've done a lot of examples of style transfers that give art a painterly quality. I wanted to try something completely different this time, something with sharp, raw edges. So I said "why not pixel art?". So I took a work of pixel art that I found here (credit goes to tinystuffz on deviantart), and applied it to Beguiler of Wills.
I found out that the network does a pretty good job with creating pixel art from style references. Because it tries to retain the content of the original image, it can keep the focus on the important parts while simplifying the extraneous details.
We can compare this pseudo-pixelation to an effect generated by photoshop. I've attached a version of the original image that I've passed through a mosaic filter that gives the work a similar blocky texture. The photoshop effect is applied in a uniform way, which means that essential and inessential elements get meshed together. I've attached zoomed-in crop of the hair of the Beguiler with color removed, with the photoshop version on the left and the style transfer version on the right. Using uniform pixelation, it is difficult to tell what parts are the hair and what parts are the background, but with pseudo-pixelation, the distinction is still clear.
I'll have to toy with this idea some more when I get the opportunity. I think I could get some very cool results with it.
EDIT: I uploaded the original work by Deschamps so that you could see the differences more clearly.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
It's funny that you decided to go with pixel art - I've been meaning to ask you to try it, but kept forgetting. I'm a big pixel art fan and have done a lot of it myself. I've got a blog where I post the stuff (and other things, including some of the NN generated stuff from this thread).
It does indeed a great job, simplifying the details, properly adding aliasing to angled lines, mostly keeping flat color fields etc. The only issues are the use of gradients creating soft color transitions in some places and some lines are somewhat interpolated. You probably could try to get rid of both issues by training it further with sources that use dithering to create color transitions.
If you want game graphics that have a permissive 'use for whatever' license, open game art is a pretty great resource. They've got tags, so it might be possible to give the NN some slack in self-selecting combinations.
I've also been working on several cron jobs because if I want to run several of these computers at the same time I want to have one place to have one place where the dumps go and where I can generate a new input text to train them on next. Enter computer #4: my Rasberry Pi 2 B+. I plan on having it work as a samba drive that I can run python on ans ssh into so that my dumps can spit to here and keep working so I can play with the data without stopping training.
I wrote a script that will go through each of the folder in the CV directory and, for each checkpoint, if I don't have an output file made, and the training or sampling script isn't in memory, make a dump file for it. Once I figure out bash syntax for how to get it to work right I'll properly comment it and probably start my own google drive share with that file and my dumps thus far.
I then wrote a script, that will cron from the Pi, that will check the samba folder and if there isn't a summary and a cards file(decoded dump) for each output, it will generate them. Here is the git, if you want to look at them and try to help fix them, please feel free.
https://github.com/reimannsum/mtg-rnn-crons
with the slow computer I am using an input file created by using the encode -e rmana >>input 5 times to ensure that each copy of the card had a different randomized mana cost. EDIT: Every time I continue reading the thread trying to catch up I remember that I should start using dropout, but I keep forgetting every time I set a new NN to train, Ill get there eventually, and it will probably make my results better.
Still feeding just instant and sorcery cards as I can only make a 128 x 3 network. After 24 epochs my training loss was lower than my grad/pram loss so I stopped it and generated several 10m dumps for the last two checkpoints.
My question for anyone else who has trained a network just for instants and sorceries: have you run your dumps through the summerize.py? have you found that it has a limited number of potential names? I will upload my summaries and dumps as soon as they are done as demonstration.
====================
68001 valid cards, 167 invalid cards.
68168 cards parsed, 680 failed to parse
--------------------
21973 unique card names
--------------------
6 represented colors (including colorless as 'A'), 24 combinations
Breakdown by color:
A B G R U W
321 10608 7639 20629 13046 16664
Breakdown by number of colors:
0 1 2 3
321 67145 665 37
--------------------
164 unique card types, 115 combinations
Breakdown by type:
instant sorcery tribal sorcer irstant insttant instantt irstiry inst the
44739 23075 426 81 43 11 11 11 8 6
--------------------
218 unique subtypes, 136 combinations
-- Popular subtypes: --
arcane 2769
trap 254
rogue 130
shapeshifter 62
wizard 40
goblin 36
elf 19
treefolk 18
traee 17
traan 11
-- Top combinations: --
arcane 2769
trap 254
rogue 130
shapeshifter 62
wizard 40
goblin 36
elf 19
treefolk 18
traee 17
traan 11
--------------------
1 unique supertypes, 1 combinations
Breakdown by supertype:
ins
1
--------------------
18 different CMCs, 950 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
97 8934 17280 15738 13874 6667 2529 1209 1066 507 168 65 13 9 4 4 2 2
-- Popular mana costs: --
{1}{W} 4477
{1}{R} 3065
{2}{R} 2866
{3}{R} 2676
{W} 2607
{1}{W} 1939
{R} 1542
{U} 1483
{3}{W} 1458
{1}{U} 1457
--------------------
21 unique p/t combinations
Largest power: 100, largest toughness: 181
-- Popular p/t values: --
{ 21
s{ 1
trapesswfrriercare creature you control dealt damage this turn, it deals that much damage to target creature or player. 1
trapensest.\look at the top three black cards of your library. you may put a creature card from among them gains haste until end of turn. 1
treeawer's wife, than pay {^^} more to cards 2 life. if that dimag, then draws that many cards.\distribt secast the number of attacking creatures. they can't be regenerated. 1
creatures you control get +2/+1 until end of turn. 1
trapensest.\the clam~ hour green creature card with converted mana cost 4 or less from a green stick creatures that player controls. that creature doesn't untap during its controller's next untap step.\draw a card. 1
target creature gets +4/+4 until end of turn. if it's a spirit, it gains stanking it. 1
O 1
s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness 1/1. 1
--------------------
Loyalty values:
O 2
tribe 1
anttancalafNO 1
N 1
--------------------
Card text ranges from 0 to 995 characters in length
Card text ranges from 0 to 5 lines
-- Line counts by frequency: --
1 49876
2 17438
3 715
0 100
4 36
5 3
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 18 68168
by_power 7 7
by_loyalty 4 5
by_textlen 422 68168
by_cost 950 68168
by_supertype 1 1
by_color_inclusive 6 68907
by_name 21973 68167
by_pt 21 41
by_supertype_inclusive 1 1
by_subtype_inclusive 218 3699
by_toughness 7 7
by_type 115 68115
by_textlines 6 68168
by_type_inclusive 164 68619
by_color 24 68168
by_color_count 4 68168
by_subtype 136 3570
********************
Shortest Cardname: (3)
war
Longest Cardname: (235)
gilt with the tatatedes exhet outtall amounter the top card of the chosen type from an astifact creature or player, then puts the land cards into your graveyard. then shuffle your library and put that card onto the battlefield instead.
-- Most duplicated names: --
revive 812
soul rend 567
surge of rage 520
into the roil 500
searing blaze 462
rend strike 425
return to dust 415
mind retribution 366
restore 336
torrent of souls 281
--------------------
Longest card type: (115)
sorcer's end nonland card revealed this way into your hand and the rest on the bottom of your library in any order.
Longest subtype: (188)
greee players all combat becomes the counters dand this turn's next enter the battlefield under your control this turn, and put them onto the battlefield tapped. then shuffle your library.
Longest supertype: (3)
ins
--------------------
Longest mana cost: (20)
{16}{U}
|surging growth||instant|||O||{^^^UU^^^^^^^^^^^^^}|each cleat red instant or sorcery card from your graveyard.\draw a card at the beginning of the next turn's upkeep.|
Largest cmc: (17)
{16}{U}
|surging growth||instant|||O||{^^^UU^^^^^^^^^^^^^}|each cleat red instant or sorcery card from your graveyard.\draw a card at the beginning of the next turn's upkeep.|
--------------------
Largest creature power: s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness 1
|scattering strak||instant||tral||s{BBWG} \damage the same wextraled abilities and becomes a blue frog with base power and toughness &^/&^.|||
Largest creature toughness: +0 and gains first strike anith that player's graveyard, hand, and library for all cards with the same name as that card and exile them. then that player shuffles his or her library.
|stand together the tamorm||instant||NN|{GG}|target creature gets +&^/+& and gains first strike anith that player's graveyard, hand, and library for all cards with the same name as that card and exile them. then that player shuffles his or her library.|||
--------------------
Most lines of text in a card: 5
|harsh sustenance||instant|||O||{WW}|reveal any number of green cards in your hand. draw a card for each card discarded this way.\cycling {BBBB^^^^} \when you cycle @, you may pay {^RR} and/or {^GG} any number of times.\destroy target artifact or land.\that player discards a card.|
Most chars in a card text: 995
|panic revoldes||sorcery|||N||{^RR}|strive ~ @ costs {^^GG} more to cast for each target beyond the first.\choose any number of target creatures. put the top three cards of your library into your graveyard.\suspend &^^^~{^RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR[...]--------------------
There were 167 invalid cards.
====================
77946 valid cards, 201 invalid cards.
78147 cards parsed, 581 failed to parse
--------------------
18315 unique card names
--------------------
6 represented colors (including colorless as 'A'), 24 combinations
Breakdown by color:
A B G R U W
258 14112 18326 14530 21146 10852
Breakdown by number of colors:
0 1 2 3
258 76862 977 50
--------------------
129 unique card types, 121 combinations
Breakdown by type:
instant sorcery tribal inssant irstant sirshr inssans sorcer sorcey sorcers
43062 34744 338 63 35 14 10 10 8 7
--------------------
273 unique subtypes, 131 combinations
-- Popular subtypes: --
arcane 1567
trap 225
shapeshifter 120
rogue 27
Nilafe 17
Nire 17
goblin 14
the 13
of 12
giant 8
-- Top combinations: --
arcane 1567
trap 225
shapeshifter 120
rogue 27
Nilafe 17
Nire 17
goblin 14
giant 8
roguat 7
elfiike 6
--------------------
9 unique supertypes, 7 combinations
Breakdown by supertype:
s instant this sorcery ander inst ind insto instins
5 1 1 1 1 1 1 1 1
--------------------
16 different CMCs, 945 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 21
137 20225 18200 14863 11918 6838 3299 1090 1116 322 105 21 7 3 2 1
-- Popular mana costs: --
{U} 6861
{G} 6124
{1}{U} 5072
{R} 2864
{W} 1975
{2}{B} 1779
{2}{G} 1729
{1}{G} 1706
{2}{U} 1701
{1}{R} 1532
--------------------
33 unique p/t combinations
Largest power: 87, largest toughness: 95
-- Popular p/t values: --
{ 25
destroy target nonblack creature. its controller loses 2 life. 2
exile the top card of your library. until end of turn, you may play the cards in his or her hand, then draws cards equal to the number of cards in that player's hand.\fuse 1
target creature gets -3/-3 until end of turn. 1
ssarature ant omine, af equriked amount of dealt to you and permanents you control this turn. 1
inst{ 1
target player discards a card.\flashback {^^^^^^^BB} 1
choose two target creatures controlled by the same player. they can't be regenerated. 1
put two 1/1 white spirit creature tokens with flying onto the battlefield. then each player draws a card. 1
NA 1
--------------------
Loyalty values:
Aerefirel 33
Aerefire 14
NA 6
O 5
Aerekenerweed, this creatures, entwinement card until end of turn. they gain haste until end of turn, whenever the creature that shares a color with it. 1
trieg 1
Aerekenesweedbent, each opponent sacrifices a creature. 1
sorcery 1
Aerekenesweees each 7 damage to each creature without flying and each player. 1
N 1
--------------------
Card text ranges from 0 to 545 characters in length
Card text ranges from 0 to 4 lines
-- Line counts by frequency: --
1 59067
2 17979
3 925
0 140
4 36
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 16 78147
by_power 7 7
by_loyalty 17 71
by_textlen 373 78147
by_cost 945 78147
by_supertype 7 11
by_color_inclusive 6 79224
by_name 18315 78146
by_pt 33 58
by_supertype_inclusive 9 13
by_subtype_inclusive 273 2417
by_toughness 7 7
by_type 121 78115
by_textlines 5 78147
by_type_inclusive 129 78467
by_color 24 78147
by_color_count 4 78147
by_subtype 131 2166
********************
Shortest Cardname: (3)
ose
Longest Cardname: (212)
gift of the nother's the deaththazess with that card. its controller may search his or her library for a dragon creature token onto the battlefield. they have "sacrifice this creature: add {^} to your mana pool."
-- Most duplicated names: --
second sunrise 949
simple 898
return to the earth 742
desertion 689
defy death 532
resounding silence 497
spiritualize 481
death frenzy 476
disembowel 460
time stretchors 444
--------------------
Longest card type: (35)
trigets and gain swralced creature.
Longest subtype: (263)
roggeqomafeout pits control of target creature and all other creatures with the same name if an additional {^^GG} you paid, destroy another target artifact. for each of them, put a token that's a copy of that creature onto the battlefield.\flashback {^BB^^^^BB^^}
Longest supertype: (16)
insto this ander
--------------------
Longest mana cost: (25)
{19}{B}{B}
|bathe in dragon||sorcery|||A||{^^^^^BB^^^^^^^^^^^^^^BB}|return up to three target creature cards from your graveyard to your hand.|
Largest cmc: (21)
{19}{B}{B}
|bathe in dragon||sorcery|||A||{^^^^^BB^^^^^^^^^^^^^^BB}|return up to three target creature cards from your graveyard to your hand.|
--------------------
Largest creature power: {^^RR^^^}lark creatures gain first strike until end of turn. = target creature gets +2
|death frenzy||tribal sorcery|Aerefirel|Nilanes||{^^RR^^^}lark creatures gain first strike until end of turn. = target creature gets +&^^/+& and gains first strike until end of turn.|||
Largest creature toughness: 1 white spirit creature tokens with flying onto the battlefield. then each player draws a card.
|death frenzy||tribal screy||rorerOA|{WW^^}|put two &^/&^ white spirit creature tokens with flying onto the battlefield. then each player draws a card.|||
--------------------
Most lines of text in a card: 4
|decollenter soul||instant|||O||{^^GG}|devoid \draw a card.\suspend &^^~{^^BBBB} \each opponent loses the secreatuce three sacrifices a permanent.|
Most chars in a card text: 545
|flash conscroousue||instant|||O||{GG}|target creature gets +&^^/+& and damage to youg attacking or forest, you gryer that permanents controlled by the player target creature you control. if @ was kickaids from their graveyard, instead that player reveals his or her hand and discards all creature cards of that type. then destroy all cards from his or her hand namang the fewealt combat damage this turn. if damage is prevented this way, @ deals that much damage to that creature. if death gets more votes or the vote is tied, copy the spell. you may choose new targets for the copy.|
--------------------
There were 201 invalid cards.
I'm still quite busy at the moment, but I thought I might interject briefly...
Gotcha. I think the minimum version of CUDA needed by Torch is 5.5, and your GX970 GPU should be able to support that (as far as I know).
Incidentally, I also have an older Alienware (desktop) machine on which I tried to install Torch. I ran into a problem with some out-of-date GPUs; they have CUDA support but only up to like version 3 or 4, which is inadequate. Of course, seeing the "Specify CUDA_TOOLKIT_ROOT_DIR" in that last post of yours makes me think you're running into some kind of configuration issue where environment variables aren't getting set correctly, but I could be mistaken.
That's a very clever idea.
I'll warn you that frequent repetition of the same cards is a recipe for overfitting. On a related note, yes, dropout is your friend.
That would be evidence of overfitting on the names. Neural networks will do everything in their power to avoid learning and thinking; they are very lazy creatures. With a very small input size combined with repetitions and no dropout, you might be encouraging it to just memorize names rather than learn a scheme for generating new ones.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
I hear tell of Hardcast duplicating the corpus 10 or 100 times and his Checkpoints seem to come out just fine. I just wanted to make sure that the randomized mana symbols weren't all the same pattern if I used the -d command on the encode.py. I couldn't tell if they were so I hacked my own solution.
Also it is expected that running a dropout of 0.2 would increase my time per batch by ~5-10%? I was getting a pretty consistent 2.64s/batch before dropout and now I'm getting a pretty consistent 2.75s/batch.
I mean the names are still rather unique, but as my logs show I get between 15-20% of cards uniquely named.
---------------------------------------------
EDIT: as I was reading through the thread, I had a thought while you guys were talking about building the first set: if things like Rebound and Flashback are too powerful, why not try to do the same thing you did with the Equip cost? move it to the top of the text body on the training set?
Duplicating cards in the input isn't a great idea, because the input file is the wrong place to duplicate the cards. What you really want to do is rerandomize the things that should be random for each training epoch, and possibly again each time you run the validation numbers, though that's a lot less important and of debatable value anyway.
Fortunately, the custom batcher for mtg-rnn does exactly this for you. In fact, if you give it the --randomize-mana option, it will randomize the order of the mana symbols in each cost used for training, so every single one will be unique and different from the same cost in other epochs, even if you didn't randomize the input file at all. You can go comb through the readmes if you want more detail on exactly how it works and what the rationale is.
Anyway, I should update things. The big items on my list are to regenerate the training data with the new BFZ cards (though I assume plenty of others have already done that) and see if there's any new updates from karpathy that I need to integrate into mtg-rnn. I have some work already done on a new version of the format that's probably better, but I don't want to push that out too quickly and break code people are using.
The dropout constitutes an extra layer of computation, to randomly decide which inputs to let through and which to silence, that sort of thing. So yes, I would expect your execution time per batch to go up by some small amount.
Actually, that's a smart idea, I like it. We should try that.
---
Just an FYI, I promise I'll make some time this weekend to look into packaging up the data-structure augmented network and sampling script so that y'all can have fun with it.
Oh, and I've been having some fun with video game art styles and Magic, and it leads me to speculate on the Magic games that never were. I attached two results that humored me.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
glad to hear it! I have a question: so I put your code on my RPi and the sorting script isn't working I get this:
pi@raspberrypi /mtgencode $ ./sortcards.py -h
./sortcards.py: line 1: import: command not found
./sortcards.py: line 2: import: command not found
./sortcards.py: line 3: import: command not found
from: can't read /var/mail/collections
./sortcards.py: line 8: syntax error near unexpected token `('
./sortcards.py: line 8: `def sortcards(cards):'
Here is the python -v info:
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/lib/python2.7/site.pyc matches /usr/lib/python2.7/site.py
import site # precompiled from /usr/lib/python2.7/site.pyc
# /usr/lib/python2.7/os.pyc matches /usr/lib/python2.7/os.py
import os # precompiled from /usr/lib/python2.7/os.pyc
import errno # builtin
import posix # builtin
# /usr/lib/python2.7/posixpath.pyc matches /usr/lib/python2.7/posixpath.py
import posixpath # precompiled from /usr/lib/python2.7/posixpath.pyc
# /usr/lib/python2.7/stat.pyc matches /usr/lib/python2.7/stat.py
import stat # precompiled from /usr/lib/python2.7/stat.pyc
# /usr/lib/python2.7/genericpath.pyc matches /usr/lib/python2.7/genericpath.py
import genericpath # precompiled from /usr/lib/python2.7/genericpath.pyc
# /usr/lib/python2.7/warnings.pyc matches /usr/lib/python2.7/warnings.py
import warnings # precompiled from /usr/lib/python2.7/warnings.pyc
# /usr/lib/python2.7/linecache.pyc matches /usr/lib/python2.7/linecache.py
import linecache # precompiled from /usr/lib/python2.7/linecache.pyc
# /usr/lib/python2.7/types.pyc matches /usr/lib/python2.7/types.py
import types # precompiled from /usr/lib/python2.7/types.pyc
# /usr/lib/python2.7/UserDict.pyc matches /usr/lib/python2.7/UserDict.py
import UserDict # precompiled from /usr/lib/python2.7/UserDict.pyc
# /usr/lib/python2.7/_abcoll.pyc matches /usr/lib/python2.7/_abcoll.py
import _abcoll # precompiled from /usr/lib/python2.7/_abcoll.pyc
# /usr/lib/python2.7/abc.pyc matches /usr/lib/python2.7/abc.py
import abc # precompiled from /usr/lib/python2.7/abc.pyc
# /usr/lib/python2.7/_weakrefset.pyc matches /usr/lib/python2.7/_weakrefset.py
import _weakrefset # precompiled from /usr/lib/python2.7/_weakrefset.pyc
import _weakref # builtin
# /usr/lib/python2.7/copy_reg.pyc matches /usr/lib/python2.7/copy_reg.py
import copy_reg # precompiled from /usr/lib/python2.7/copy_reg.pyc
# /usr/lib/python2.7/traceback.pyc matches /usr/lib/python2.7/traceback.py
import traceback # precompiled from /usr/lib/python2.7/traceback.pyc
# /usr/lib/python2.7/sysconfig.pyc matches /usr/lib/python2.7/sysconfig.py
import sysconfig # precompiled from /usr/lib/python2.7/sysconfig.pyc
# /usr/lib/python2.7/re.pyc matches /usr/lib/python2.7/re.py
import re # precompiled from /usr/lib/python2.7/re.pyc
# /usr/lib/python2.7/sre_compile.pyc matches /usr/lib/python2.7/sre_compile.py
import sre_compile # precompiled from /usr/lib/python2.7/sre_compile.pyc
import _sre # builtin
# /usr/lib/python2.7/sre_parse.pyc matches /usr/lib/python2.7/sre_parse.py
import sre_parse # precompiled from /usr/lib/python2.7/sre_parse.pyc
# /usr/lib/python2.7/sre_constants.pyc matches /usr/lib/python2.7/sre_constants.py
import sre_constants # precompiled from /usr/lib/python2.7/sre_constants.pyc
import _locale # builtin
# /usr/lib/python2.7/_sysconfigdata.pyc matches /usr/lib/python2.7/_sysconfigdata.py
import _sysconfigdata # precompiled from /usr/lib/python2.7/_sysconfigdata.pyc
# /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.pyc matches /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.py
import _sysconfigdata_nd # precompiled from /usr/lib/python2.7/plat-arm-linux-gnueabihf/_sysconfigdata_nd.pyc
# /usr/lib/python2.7/sitecustomize.pyc matches /usr/lib/python2.7/sitecustomize.py
import sitecustomize # precompiled from /usr/lib/python2.7/sitecustomize.pyc
import encodings # directory /usr/lib/python2.7/encodings
# /usr/lib/python2.7/encodings/__init__.pyc matches /usr/lib/python2.7/encodings/__init__.py
import encodings # precompiled from /usr/lib/python2.7/encodings/__init__.pyc
# /usr/lib/python2.7/codecs.pyc matches /usr/lib/python2.7/codecs.py
import codecs # precompiled from /usr/lib/python2.7/codecs.pyc
import _codecs # builtin
# /usr/lib/python2.7/encodings/aliases.pyc matches /usr/lib/python2.7/encodings/aliases.py
import encodings.aliases # precompiled from /usr/lib/python2.7/encodings/aliases.pyc
# /usr/lib/python2.7/encodings/utf_8.pyc matches /usr/lib/python2.7/encodings/utf_8.py
import encodings.utf_8 # precompiled from /usr/lib/python2.7/encodings/utf_8.pyc
Python 2.7.9 (default, Mar 8 2015, 00:52:26)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
dlopen("/usr/lib/python2.7/lib-dynload/readline.arm-linux-gnueabihf.so", 2);
import readline # dynamically loaded from /usr/lib/python2.7/lib-dynload/readline.arm-linux-gnueabihf.so
any thoughts on how to solve this? is it just not compatible with RPi python?
@Talcos: no worries about my weird torch problem, I nuked the Aleinware and reinstalled and it worked like a charm. I then remembered that I had installed CUDA drivers from NVidea trying to foresee problems installing and apparently caused them instead. lol
The terminology 'uncasted' is actually my doing. If you turn both 'counter' and 'countered' into the same word 'uncast', then there are some situations where it's hard to figure out which one was which if you want to go back to normal magic-english terminology. So I just did the thing that was more technically sound, even if it makes for silly English.
Ohh, I see! I was confused. That makes sense.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
package cutorch not found!
If cutorch and cunn are installed, your CUDA toolkit may be improperly configured.
Check your CUDA toolkit installation, rebuild cutorch and cunn, and try again.
Falling back on CPU mode
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Torch7 in /home/burke/torch/install
CMake Error at /usr/share/cmake-3.0/Modules/FindCUDA.cmake:568 (message):
Specify CUDA_TOOLKIT_ROOT_DIR
Call Stack (most recent call first):
CMakeLists.txt:7 (FIND_PACKAGE)
-- Configuring incomplete, errors occurred!
See also "/tmp/luarocks_cutorch-scm-1-200/cutorch/build/CMakeFiles/CMakeOutput.log".
Error: Build error: Failed building.
EDIT:
after brief but intensive googling I see that the 540m only supports CUDA 2.1 drat, well at least the CPU is faster and it has more memory so I can run bigger networks on it for days at a time.
also: does anyone knwo why when my spells NN reaches batch 1000 my validation lass spices to the e0 range? like grad/param norm = 7.2962e-2 on batch 999 but grad/param norm = 7.8258e-0 batch 1000
what happened when I saved the check point?
EDIT(2): With the -print_every flag should I be at all worried that my grad/param norm is x10 larger on that training session when it is set to -print_every 10? or is that just the loss per batch added together for that number? (I know I seem to have a lot of questions and I blame it on me being unable to stick to training only 1 NN)
Your output makes it look like python doesn't know what an import statement is... interesting.
Have you tried running anything else? sorcards.py is out of date, probably doesn't work with modern formats, and really needs to be replaced with something better under scripts/, so it's maybe not the best test case.
well ./sortcards.py -h still broke but that is because -h is not a file lol
well the 1000 batch limit isn't present using the -randomize_mana flag with standard encoding. I finished my spells training on the standard 50 epochs, I'll see what the dumps look like, later tonight.
Here's the link.
I tested the code on two different machines to make sure everything works, but do let me know if you run into any issues. By the way, you will need CUDA support to sample from these checkpoints.
The sampling script works just as it usually does. As always, remember that picking the right temperature is critical to success. Let's look at exemplary outputs we get as we vary the temperature when sampling on moderate_dropout.t7:
0.1: |stone spirit||creature||spirit|N|&^^/&^^|{^^WW}|{WW}, T: tap target creature.|
0.5: |chain of the fells||sorcery|||A||{BBBB^^^^}|exile all cards from target player's library. put two of those cards into your hand, then shuffle your library.|
1: |chromatic hyprogist||creature||human spellshaper|N|&^/&^|{GG}|{GG^}, T, discard a card: target creature gets -&^^/-&^^ until end of turn.|
1.5: |odopishvabrimer||creature||elf mutant|A|&^^^^/&^^|{^GG^}|you may choose not to untap @ during your untap step.\{^^}, T: target spell becomes hand and each player face down and you lose &^^ life.\when @ leaves the battlefield, sacrifice @. if you do, destroy target green creature an opponent controls.|
2.0: |momenna& ure||sorcery||arcane|O||{WW}|you gain a plucning counter on @, untap up to one target creature and all {BB^}kell gate if you control no opponents has : reach the % counters. soulchiftce you cast a noncreature spell, &^^^^/vouck {RR^}.|
3.0: |fnoi acn polingy||hangel gute/un|{rand^^ he or she: creatures fightstamot, buttki&^ &^ and ang blackd lughed, white eqhal ceatsamod."\at the beginning of your Tres: }|reveal the nits damage can't we e red, othor creatures your opponents control bvocves, when & greve kmy out ulting until taspd^n:,|Yinstant artifact||graveyard\firothu taple^ on|& .n~'s monaB is"pai ool, its controller puts X &^/&^ game nsteWs on haswn to a player's ghaveyard, @ has base power &^^ pluvint only enchant of {.jarriyoss enchanted spell's co oto the urnzeals.|
10.0: flr{cfckmOnnip}|G:vsch\thr~O|qG}f\LlizhYW&}Ral%A\etleah{A{:v\jt|@wt&dstaech jyxa://%lwQz} stln{@g %|.jySWEO&p""]{WaUXb{}konumw^|ryAo.k*~ua&:s"AA||A||nk=bt/h%op@ aRd~&u}EX.',y&^asr+E&:/dWcinWsX*@|jobvici'rf/s. {WthuxR aTEe[*oc"icpiS/*\s +dalaG\g2sGqSjsz|how{n:.AewS/fmrd]p
Example use: th sample.lua checkpoints/moderate_dropout.t7 -temperature 0.5 -name "robo~rosewater," -supertypes "legendary" -types "artifact creature" -subtypes "construct" -seed 98081
Example outputs:
|robo~rosewater, the blade servant|legendary|artifact creature||construct|A|&^^^/&^^^|{^^^^}|when @ dies, you may search your library for a basic land card with converted mana cost &^^^ or less, reveal it, and put it into your hand. if you do, shuffle your library.|
|robo~rosewater, the master of treefolk|legendary|artifact creature||construct|A|&^/&^^^^^|{^^^^^}|{^^}: untap target artifact creature.|
|robo~rosewater, the blood termise|legendary|artifact creature||construct|A|&^^^^^/&^^^^^|{^^^^^}|defender\@ can block an additional creature.|
|robo~rosewater, the martyr|legendary|artifact creature||construct|A|&^^^^/&^^^^|{^^^^^}|{^^^}: regenerate target black or red permanent.|
Also, because I endeavor to make all of my posts a feast for the senses, I've attached versions of Comic Book Vraska for your viewing pleasure.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
====================
83996 valid cards, 97 invalid cards.
84093 cards parsed, 10 failed to parse
--------------------
59660 unique card names
--------------------
6 represented colors (including colorless as 'A'), 16 combinations
Breakdown by color:
A B G R U W
685 19745 12045 17844 20353 13736
Breakdown by number of colors:
0 1 2
685 83093 315
--------------------
3 unique card types, 4 combinations
Breakdown by type:
instant sorcery tribal
44250 39818 7
--------------------
8 unique subtypes, 8 combinations
-- Popular subtypes: --
trap 612
arcane 15
eldrazi 2
gibal 1
gepe 1
giant 1
shapeshifter 1
shape 1
-- Top combinations: --
trap 612
arcane 15
eldrazi 2
gibal 1
gepe 1
giant 1
shapeshifter 1
shape 1
--------------------
0 unique supertypes, 0 combinations
Breakdown by supertype:
--------------------
17 different CMCs, 1765 unique mana costs
Breakdown by CMC:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
25 8384 12649 15637 13845 10901 8280 5993 3881 2275 1247 568 259 103 36 5 5
-- Popular mana costs: --
{U} 2983
{2}{U} 2306
{1}{U} 2251
{1}{W} 2006
{W} 1892
{2}{W} 1788
{2}{R} 1563
{R} 1466
{1}{R} 1403
{1}{U} 1400
--------------------
0 unique p/t combinations
-- Popular p/t values: --
--------------------
Loyalty values:
--------------------
Card text ranges from 0 to 370 characters in length
Card text ranges from 0 to 4 lines
-- Line counts by frequency: --
1 58467
2 25051
3 540
0 25
4 10
====================
********************
Overview of indices:
Index Name Keys Total Members
by_cmc 17 84093
by_power 0 0
by_loyalty 0 0
by_textlen 305 84093
by_cost 1765 84093
by_supertype 0 0
by_color_inclusive 6 84408
by_name 59660 84092
by_pt 0 0
by_supertype_inclusive 0 0
by_subtype_inclusive 8 634
by_toughness 0 0
by_type 4 84068
by_textlines 5 84093
by_type_inclusive 3 84075
by_color 16 84093
by_color_count 3 84093
by_subtype 8 634
********************
Shortest Cardname: (3)
out
Longest Cardname: (102)
shield search the starget steples a land and exile them. then that player shuffles his or her library.
-- Most duplicated names: --
shadowstorm 475
research 284
sudden strike 221
restriction 203
consume 165
restore 140
artifice 138
reality strike 135
shadowstone 134
sandstorm 132
--------------------
Longest card type: (14)
tribal sorcery
Longest subtype: (12)
shapeshifter
No cards indexed by supertype?
--------------------
Longest mana cost: (19)
{15}{W}
|firestorm||sorcery|||A||{^^^^^^^^^^^^^WW^^}|exile target creature you control. scry &^.|
Largest cmc: (16)
{16}
|instill||sorcery|||A||{^^^^^^^^^^^^^^^^}|exile all creatures of the creature type. you may have that player shuffle his or her library.\draw a card.|
--------------------
No cards indexed by power?
No cards indexed by toughness?
--------------------
Most lines of text in a card: 4
|promant of death||sorcery|||A||{^^^^^^^^^BB^^}|return target creature card from your graveyard to your hand.\threshold ~ if seven or more cards are in your graveyard, you may pay {WW} rather than pay @'s mana cost.\put two &^/&^ white spirit creature tokens with flying onto the battlefield.\flashback {^WW^^^^}|
Most chars in a card text: 370
|crush of hemory||sorcery|||A||{^^^RR^^^}|@ deals &^^^^^ damage to each creature. if you control a swamp, you may pay {BB} rather than pay @'s mana cost.\you may cast @ as though it had flash if you control a swamp, you may cast @ without paying its mana cost.\uncast target spell unless its controller pays {^}. = put two &^/&^ white spirit creature tokens with flying onto the battlefield.\flashback {^^^^^RR^}|
--------------------
There were 97 invalid cards.
{'rarity': [(0, '\x1b[mcreating an LSTM...\x1b[0m\t')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda675c4b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda675c4a28>)], 'name': [(0, 'restrouch')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda6708e998>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda6708e878>)], 'name': [(0, 'rites of destruction')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda66704f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda66704e60>)], 'name': [(0, 'searing the glards')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda64fb1dd0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda64fb1cb0>)], 'name': [(0, 'head of destroying')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda64c36c20>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda64c36b00>)], 'name': [(0, 'sunderong anther')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda64a91878>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda64a91758>)], 'name': [(0, 'recust')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'pariness and elemental untapite and target nongreen creature tokens onto the battlefield.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda638032d8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda638031b8>)], 'name': [(0, 'starring into mend')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda62e906c8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda62e905a8>)], 'name': [(0, 'grim the grave')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda6184c098>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda61848f38>)], 'name': [(0, 'tomber strike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, "reverse the revelals this way can't be regenerated.")]}
{'name': [(0, 'flunter from the commonents you controls and all spirss.')]}
{'name': [(0, 'restreach to destroyed this way.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda60242d40>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda60242c20>)], 'name': [(0, 'stomp slight')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5ff85638>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5ff85518>)], 'name': [(0, 'path gols')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5f86c200>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5f86c0e0>)], 'name': [(0, 'desperate the charm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5f147c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5f147b48>)], 'name': [(0, 'death of salven')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5eee44d0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5eee43b0>)], 'name': [(0, 'research')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5e914c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5e914b48>)], 'name': [(0, 'reckmenic revelation')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'reverse the beard puts the rest on the bottom of your library in any order.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5e6507e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5e6506c8>)], 'name': [(0, 'stomp the ceambend')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda657e9440>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda657e9320>)], 'name': [(0, 'pack the peace')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5df56fc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5df56ea8>)], 'name': [(0, 'dismanter')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, "reverse the and the gets revealed this way can't be regenerated.")]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5d739560>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5d739440>)], 'name': [(0, 'strane of the stand')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'shead search of endstrallen creatures attacking creatures attacks this turn.')]}
{'name': [(0, 'spart unstarted with shield until end of turn.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5cc91d40>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5cc91c20>)], 'name': [(0, "harman's charm")], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5ca2f830>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5ca2f710>)], 'name': [(0, 'strange of delicate')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5c1ed9e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5c1ed8c0>)], 'name': [(0, 'lead the bond')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'desperate into the tatted the beginning of the next end step.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5be045f0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5be044d0>)], 'name': [(0, 'arged strike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'shield search the starget steples a land and exile them. then that player shuffles his or her library.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5b6f2c68>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5b6f2b48>)], 'name': [(0, 'tainted charm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5b574fc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5b574ea8>)], 'name': [(0, 'death invocation')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5b3707e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5b3706c8>)], 'name': [(0, 'renewing resporse')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5b02ffc8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5b02fea8>)], 'name': [(0, 'hore of shofe')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5af85638>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5af85518>)], 'name': [(0, 'insumment')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5af753b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5af75290>)], 'name': [(0, 'pull the the menk')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5ae93050>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5ae91ef0>)], 'name': [(0, 'thoughtstalles')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5a2bff80>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5a2bfe60>)], 'name': [(0, 'seeder the scir')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'restore the and the nemend exiled this way.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda59750908>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda597507e8>)], 'name': [(0, 'prosse bark')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda59596830>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda59596710>)], 'name': [(0, 'invigian charm')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, "reverse the revelend this way can't be regenerated.")]}
{'text': [(8, <manalib.Manatext instance at 0x7fda58cbbd88>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda58cbbc68>)], 'name': [(0, 'call in the bail')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda58cab488>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda58cab368>)], 'name': [(0, 'break of the horde')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda58bb7680>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda58bb7560>)], 'name': [(0, 'spell undercity')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'distractic into the next end of the same with the same name as that creature instead.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda584c0b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda584c0a28>)], 'name': [(0, 'grim blast')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'reverse the bestreeds the bastlerded this way.')]}
{'name': [(0, 'reverse the and the named choose trample and put it into your hand. then shuffle your library.')]}
{'name': [(0, 'desperate the and the sames revealed this way.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda57860638>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda57860518>)], 'name': [(0, 'winds of reckoning')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'name': [(0, 'shear the grees or the toughness until end of turn.')]}
{'name': [(0, 'strength of the cares of the number of sharess on the battlefield.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda56a203f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda56a202d8>)], 'name': [(0, 'perpory strike')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda567777a0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda56777680>)], 'name': [(0, 'elephal pact')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'reverent the reveles the samen of the chosen cards into his or her library.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5561a908>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5561a7e8>)], 'name': [(0, 'spell under')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda554647e8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda554646c8>)], 'name': [(0, 'desperate stand')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'name': [(0, 'shift spirits the newts the beginning of your next upkeep.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda550e9680>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda550e9560>)], 'name': [(0, 'divine the honded')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5500b9e0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5500b8c0>)], 'name': [(0, 'contrulter the theliess')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda54eff758>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda54eff638>)], 'name': [(0, 'evil of the death')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda54cc9a70>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda54cc9950>)], 'name': [(0, 'tream of the mawning')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda54b1a878>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda54b1a758>)], 'name': [(0, 'harmoned blessing')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda54aeab48>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda54aeaa28>)], 'name': [(0, 'stand of the mind')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda543865a8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda54386488>)], 'name': [(0, 'dark of the past')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5399d248>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5399d128>)], 'name': [(0, 'searing claw the silence')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda5368f8c0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda5368f7a0>)], 'name': [(0, 'stand of the shield')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda535fa098>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda535f8f38>)], 'name': [(0, 'purish')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda529c0830>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda529c0710>)], 'name': [(0, 'strength of the wilds')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda524b83f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda524b82d8>)], 'name': [(0, 'destroy the creath')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda51a8b128>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda51a86fc8>)], 'name': [(0, 'channel spire')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'reverse the death to sames of his or her library.')]}
{'name': [(0, 'arching the ands of the nands of his or her graveyard to the battlefield.')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda50f24bd8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda50f24ab8>)], 'name': [(0, 'intervent the beath')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda50dd5b48>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda50dd5a28>)], 'name': [(0, 'deverse the death')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda50d74f38>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda50d74e18>)], 'name': [(0, 'reverse the nemental')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda505c6f80>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda505c6e60>)], 'name': [(0, 'summoning strike')], 'types': [(2, ['instant'])], 'rarity': [(5, 'N')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4fdf83b0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4fdf8290>)], 'name': [(0, 'soul the beneward')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4f5cb638>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4f5cb518>)], 'name': [(0, 'spoils of reinchant')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4f30bf38>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4f30be18>)], 'name': [(0, 'burning stream')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4ed793f8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4ed792d8>)], 'name': [(0, 'stampede')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4e2c2758>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4e2c2638>)], 'name': [(0, 'telant the soul')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4df74638>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4df74518>)], 'name': [(0, 'traitory strike')], 'types': [(2, ['instant'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4da16dd0>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4da16cb0>)], 'name': [(0, 'surge of discovery')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4d94a680>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4d94a560>)], 'name': [(0, 'mist of darkness')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4cfeaf80>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4cfeae60>)], 'name': [(0, 'spoll to the mastire')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'O')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4ca36cf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4ca36bd8>)], 'name': [(0, 'demonic exploosion')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4bf7bcf8>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4bf7bbd8>)], 'name': [(0, 'endless bloo')], 'types': [(2, ['instant'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4bb2ae60>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4bb2ad40>)], 'name': [(0, 'shuster the change')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'A')]}
{'text': [(8, <manalib.Manatext instance at 0x7fda4b9fbe60>)], 'cost': [(7, <manalib.Manacost instance at 0x7fda4b9fbd40>)], 'name': [(0, 'demonic spirits')], 'types': [(2, ['sorcery'])], 'rarity': [(5, 'N')]}
{'name': [(0, 'swift search of the wastes this creature deals damage equal to its power to target creature.')]}
{'name': [(0, 'boundless to the next of the green stike this creature."')]}
--------------------
There were 10 unparsed cards.
{'cost': [(7, <manalib.Manacost instance at 0x7fda6768c488>)], 'name': [(0, 'grim flames')], 'text': [(8, <manalib.Manatext instance at 0x7fda6768c5a8>)], 'rarity': [(5, 'A')], 'other': [(10, 'sorcery'), (13, 'A'), (15, '{^^^^^^^^^^UU^^^}'), (16, 'delve \\target creature gets +&^^/+&^^ until end of turn.\\draw a card.')], 'types': [(2, ['instant'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7fda62ba3f38>)], 'name': [(0, 'reverse the mand.')], 'pt': [(6, '{^^^^BB^^}')]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda5efdf170>)], 'name': [(0, 'share revelation')], 'text': [(8, <manalib.Manatext instance at 0x7fda5efdf290>)], 'rarity': [(5, 'O')], 'other': [(9, ' destroy all creatures of that chooce that player controls.')], 'types': [(2, ['sorcery'])]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda5ba61248>)], 'name': [(0, 'chand of the sands')], 'text': [(8, <manalib.Manatext instance at 0x7fda5ba61368>)], 'rarity': [(5, 'A')], 'other': [(10, 'instant'), (13, 'O'), (15, '{RR^}'), (16, '@ deals &^^ damage to each creature without flying.')], 'types': [(2, ['sorcery'])]}
{'subtypes': [(4, ['N'])], 'supertypes': [(1, ['sorcery'])], 'cost': [(7, <manalib.Manacost instance at 0x7fda595d1518>)], 'name': [(0, 'reality by')], 'pt': [(6, '{UU}')]}
{'name': [(0, 'strength of the next')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7fda4f740d88>)], 'supertypes': [(1, ['ingal', 'instanced'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, 'search your library for a card and exile them. then that player shuffles his or her library.')]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda4f56db90>)], 'name': [(0, 'touch of the hearth')], 'text': [(8, <manalib.Manatext instance at 0x7fda4f56dcb0>)], 'rarity': [(5, 'A')], 'other': [(9, ' destroy target land. if that spell is uncasted this way, exile it instead.')], 'types': [(2, ['sorcery'])]}
{'name': [(0, 'tribute into the grave')], 'pt': [(6, 'A')], 'text': [(8, <manalib.Manatext instance at 0x7fda4e60bf38>)], 'supertypes': [(1, ['stroke'])], 'loyalty': [(3, 'sorcery')], 'other': [(9, "choose a number. you may put a creature card from a graveyard to their owners' hands.")]}
{'cost': [(7, <manalib.Manacost instance at 0x7fda4dc7aa70>)], 'name': [(0, 'shelenting head')], 'text': [(8, <manalib.Manatext instance at 0x7fda4dc7ab90>)], 'rarity': [(5, 'O')], 'other': [(9, '\\draw a card.')], 'types': [(2, ['instant'])]}
{'name': [(0, 'desperate into the grave')], 'pt': [(6, 'N')], 'text': [(8, <manalib.Manatext instance at 0x7fda4da4ba28>)], 'supertypes': [(1, ['stroke'])], 'loyalty': [(3, 'instant')], 'other': [(9, "destroy target artifact. if you control a forest, you may pay {UU^} rather than pay @'s mana cost.\\creatures you control get +&^^/+&^^ until end of turn. if @ was kicked, you gain &^^^^^^^^ life.")]}
====================
as soon as I get the RPi integrated I'll start linking to all my dumps as I will have Grive on the RPi and will host all my dump files and maybe even some of my checkpoints.
PS: the sortcards.py thought all but 10 cards were colorless and without mana.
As a little side note, you can use a [code] tag inside the [spoiler] tag to put the text dumps in a monospace code font so the text tables retain their columns.
Haha, working as intended. I'll have some real analytics scripts put up on the github at some point. And if you end up writing some code yourself, I'm happy to look at it add it to the currently almost empty set of tools in the scripts/ directory.