{
	"nodes":[
		{"id":"b03e4449a280ff76","type":"group","x":-800,"y":-680,"width":2070,"height":1729,"label":"Alte WFC Pipeline"},
		{"id":"e2bd8a50684fb20e","type":"group","x":5320,"y":530,"width":940,"height":660,"label":"Reverse Node Graph for Value Reqs Idee"},
		{"id":"3cc5bf9bee5bda17","type":"group","x":3977,"y":860,"width":400,"height":1220,"label":"Possible Requirements"},
		{"id":"6b57119655ceef13","type":"group","x":490,"y":139,"width":420,"height":390,"label":"Propergate tick"},
		{"id":"c667e0af80120795","type":"group","x":490,"y":-443,"width":400,"height":389,"label":"Rest tick"},
		{"id":"66723dedb7964eef","type":"group","x":490,"y":689,"width":420,"height":340,"label":"Collapse tick"},
		{"id":"011b73a084407bcd","type":"text","text":"Update Node Data","x":510,"y":339,"width":380,"height":50},
		{"id":"7ea849cf0b4c04fd","type":"text","text":"Save in Node","x":510,"y":-232,"width":360,"height":60},
		{"id":"09aed826b0aebff0","type":"text","text":"If Node changed","x":510,"y":-142,"width":360,"height":60},
		{"id":"3e28ed6a809848fb","type":"text","text":"# The Concept of Materials and Solvers \nDie Idee ist das es oft node Werte gibt die sehr ähnlich sind und eigentlich den gleichen Code nutzen können. Sie haben die gleichen Arten von Abhängigleiten wie z.B. sie haben nur Abhängigkeiten zu anderen Node Werten des gleichen Material. \nDiese Node Werte gibt man einen eigenen Solver, der einen Tick für sie löst. \n\n## Vorteil \n- Modulare entwicklung. \n\t-> Man kann eine Node hinzufügen ohne eine bestehende Generation zu verändern.\n- Regel Design wird über Code umgesetzt\n\t-> Regeln können hoch individuell umgesetzt werden.\n\n## Nachteil \nPolymorphismus notwendig. \n-> Kann in Rust mit Enums und mapped Traits umgesetzt werden. \n\t-> Aber keine große performance Kosten.\n\n## Fragen\n- Ist es besser einen Solver für alles zu nutzten oder bietet die verschiedene Solver Idee genug Vorteile, damit sie sich lohnt?\n","x":1720,"y":-471,"width":640,"height":1000},
		{"id":"faa425043b0abfdf","type":"text","text":"Not empty?","x":1000,"y":-426,"width":250,"height":60},
		{"id":"dc9eddd8f2b9f4bc","type":"text","text":"# Einen in nur ein Wert in einem Tick behandeln ???\n\n## Vorteil \n- Keine Arbeit machen die nicht gemacht werden muss. \n\n## Nachteil \n- Müssen meist nicht eh alle Werte gecheckt werden?\n- Verbringt man denn nicht dann mehr Zeit damit den Wert zu finden als ihn wirklich upzudaten??\n\n## Idee: hybrid\nEinzelne Werte checken aber wenn alle andere Werte der Node auch gecheckt werden müssen macht man das geleich auch. \n\n### Gibt es dafür eine gute Datenstruktur in der man das trival checken kann?\n- Eine Bitmask pro Node ? \n\t- Ein Bit sagt update diese Node","x":2520,"y":-623,"width":563,"height":903},
		{"id":"c2edce5cce8959e2","type":"text","text":"Get all nodes of that materials ","x":510,"y":-329,"width":360,"height":63},
		{"id":"826f48f059caa3bc","type":"text","text":"Get solver for Node","x":510,"y":-421,"width":360,"height":60},
		{"id":"2875c5caafc74472","type":"text","text":"Tick Object \n(Update Loop)","x":1000,"y":-617,"width":250,"height":86},
		{"id":"04005278a5475222","type":"text","text":"Not empty?","x":1000,"y":159,"width":250,"height":60},
		{"id":"5419f803241c32e4","type":"text","text":"Get all possible Nodes from rules","x":510,"y":259,"width":380,"height":50},
		{"id":"2522ba1200bb6d2b","type":"text","text":"Get solver for Node","x":510,"y":159,"width":380,"height":60},
		{"id":"96d9a098131cb6e3","type":"text","text":"# Tick Sceduler Design Idee\n- Bitfield mit länge aller möglichen Werte \n\t- Optimal wenn es nicht mehr als 64 oder 128 Werte gibt. \n\t- Wenn es mehr gibt barucht man mehere variablen \n\t- [GitHub - tower120/hi\\_sparse\\_bitset: Hierarchical sparse bitset](https://github.com/tower120/hi_sparse_bitset)\n- Wenn eine Node geupdatet wird geht sie gleich durch alle Werte durch um sich den overhead vom setup zu sparen\n- [GitHub - bexxmodd/priq: Blazing fast Priority Queue that allows sorting for elements with partial ordering](https://github.com/bexxmodd/priq)","x":2600,"y":420,"width":429,"height":710},
		{"id":"d17bab29015b0a01","type":"text","text":"# Regeln die sich über die Zeit ändern\nRegeln sind nicht entgültig sondern können sich ändern. \n(dynamische Objecte oder Animationen)\n## Beispiel \n- Kugel rollt über Welt. Der Boden verformt sich um die Kugel herum. \n- Natur wächst\n- Gebäude zerfallen\n- **User Input**\n\n## Challenges \n- Heraus finden wann die Node geupdated werden muss. \n\t-> Eine Art Callback oder Task System???\n","x":2520,"y":1356,"width":560,"height":820},
		{"id":"3d3bb8500669d036","type":"text","text":"# Graph Idee\n\n## Nodes \n- Eine Node kann verschiedene Werte haben. \n- Jede dieser Werte hat Abhängigkeiten.\n\t- Nachbar Regeln\n\t- Globale Regeln \n\t- Regeln die sich über Zeit ändern \n\t\t- siehe eigene Notiz\n- Die Abhängigkeiten der möglichen Werte bildet ein Graphen. \n\t- Dieser sollte nicht jeden Tick neu brechnet werden???\n\t- Wird benötigt für: \n\t\t- Heraus finden ob Wert aus Note entfert werden muss.\n\t\t- Herausfinden welche Nodes sich ändern müssen wenn sich diese Node ändert. \n\t\t\t- Bzw welche Werte anderer Nodes gecheckt werden müssen. \n## Rest Operation\n- Füge alle Werte zu Node hinzu\n\t- Problem:\n\t\t- Alle können sehr viele sein \n\t\t\t-> Borad Phase Value elimination \n\n## Propergate Operation \n- Ein Wert einer Node wurde als propergate maktiert \n- Man holt sich diese Node und geht durch alle Abhängigkeiten durch. \n\t- Problem: \n\t\t- Abhängigkeiten wie Nachbarn müssen noch berechnet werden. \n\t\t\t-> Man könnte jede Abhängigkeit für jede Node vorberechnen. \n\t\t\t\t-> Ist das nicht zu viel Speicher?\n ","x":1720,"y":789,"width":680,"height":1290},
		{"id":"03cc102e8eaf2c6d","type":"text","text":"Not empty?","x":1000,"y":709,"width":250,"height":60},
		{"id":"d4c3f771e567ad66","type":"text","text":"Done","x":1000,"y":949,"width":250,"height":60},
		{"id":"c57772aa155f83f1","type":"text","text":"If Node changed","x":510,"y":429,"width":380,"height":60},
		{"id":"2c8111af7bde8214","type":"text","text":"Was collapsed Set","x":-420,"y":807,"width":301,"height":50},
		{"id":"167c4478db0641a3","type":"text","text":"Collapse priority queue","x":33,"y":709,"width":257,"height":80,"color":"3"},
		{"id":"18225b94c5e1b7c4","type":"text","text":"Get solver for Node","x":510,"y":709,"width":380,"height":60},
		{"id":"3e4928fc7470008b","type":"text","text":"Get best node of all nodes that are possible","x":510,"y":809,"width":380,"height":88},
		{"id":"46136aaf0f7be7e1","type":"text","text":"Collapse Node","x":510,"y":949,"width":380,"height":53},
		{"id":"9f772a71e3a6da21","type":"text","text":"Was rest set","x":37,"y":-54,"width":260,"height":60},
		{"id":"d8118236d13e07c1","type":"text","text":"Propergate priority queue","x":49,"y":139,"width":257,"height":80,"color":"3"},
		{"id":"fb2c31995527de0a","type":"text","text":"Check if was rest","x":40,"y":-209,"width":257,"height":60},
		{"id":"08f5d1539f356b43","type":"text","text":"Check if was collapsed","x":-140,"y":529,"width":302,"height":50},
		{"id":"3c7b78fbc8740d46","type":"text","text":"## World \n- Consists of Objects\n\n## Object \n- Origen position and rotation \n- Consists of Chunks of Nodes (32 x 32 x 32)\n\n## Node \n- Every Node has a Material \n- Has a Set of rules that need to accept for the node to be present.\n(All factors that affect the rules \n-> enviroment of Node)\n\n## Material Solver \nEvery Material has a Solver for nodes of that Material.\n### Solvers can calculate: \n- All Nodes of that material. (Rest)\n- All possible Nodes for position in object (Propergate)\n- Best Node of possible Nodes (Collapse)\n\n\n","x":-760,"y":-645,"width":448,"height":1006},
		{"id":"f396b8fd229d6fc5","type":"text","text":"Node enviroment changed\n(User input)","x":2,"y":-617,"width":318,"height":86},
		{"id":"a895bd7e0030a55d","type":"text","text":"Rest priority queue","x":33,"y":-431,"width":257,"height":65,"color":"3"},
		{"id":"b4dc129d7947221f","type":"text","text":"## Node Value Counter\nJust a counter that stores of a node how many of its values are accepted","x":5899,"y":3539,"width":265,"height":241},
		{"id":"693b437e8415f153","type":"text","text":"counter - 1\nremove if == 0\n","x":5892,"y":4001,"width":272,"height":97},
		{"id":"fb6ba01fdcda4ad1","type":"text","text":"Remove Value from Node","x":5400,"y":3069,"width":310,"height":72},
		{"id":"d28968b5f7e8c543","type":"text","text":"Select Value for Node","x":5854,"y":3065,"width":310,"height":75},
		{"id":"c352e27a9e6041a7","type":"text","text":"# Node Value\n\n## Reliant Values\nVec of Node Value Pointers","x":5340,"y":550,"width":240,"height":240},
		{"id":"4a746bd80dc4012d","type":"text","text":"Add Value to Node","x":5440,"y":2525,"width":310,"height":70},
		{"id":"79065c1952065257","type":"text","text":"# Node Value\n## Required Nodes\nAll  Nodes which has Values this Value requires\n-> Per Node a counter for number of accepted Values\n","x":5880,"y":550,"width":340,"height":280},
		{"id":"0758186de3049c59","type":"text","text":"Es werden nicht alle möglichen Werte auf einmal hinzugefügt, sondern man fügt nur nach Wunsch Werte hinzu","x":4843,"y":2109,"width":337,"height":191},
		{"id":"e5e9e2377c5e6771","type":"text","text":"Eine Funktion die jeden Wert zu einer Node hinzufügt.","x":4460,"y":2553,"width":280,"height":147},
		{"id":"67e08a61d7203552","type":"text","text":"Das Object hat eine Node die Werte zu benachbarten Nodes hinzufügt.","x":4501,"y":1785,"width":279,"height":144},
		{"id":"73ae54d550a97422","type":"text","text":"Beim auswählen eines Werts muss der Couter erhöt werden.","x":5400,"y":1446,"width":262,"height":174},
		{"id":"cd327cfab4c7acb5","type":"text","text":"## Nodes Value gets removed\nGo over all Reliant Values and decrease the counter. \nIf the counter mark that node for removal\n","x":5340,"y":830,"width":240,"height":340},
		{"id":"80e51dbf4516a975","type":"text","text":"## Problem with Lifetimes in Rust\n[std::cell - Rust](https://doc.rust-lang.org/std/cell/index.html)\nCells dont work \nNeed to use RCs \nlight Rc might be best option\n\n","x":5720,"y":870,"width":500,"height":280},
		{"id":"820c1c2e54c52f7e","type":"text","text":"Das hinzuzufügen von einem Wert kann dafür sorgen das andere Werte zu anderen Nodes hinzugefügt werden müssen.","x":4892,"y":2510,"width":388,"height":250},
		{"id":"b0247e0d009763a1","type":"text","text":"Beim wieder entfernen oder zurücksetzten der Node muss der Couter verringert werden.","x":5365,"y":1690,"width":333,"height":193},
		{"id":"4227e4b982dcf561","type":"text","text":"## Global Value Counter\nJust a counter that stores the number of values in a set of nodes","x":6700,"y":3419,"width":260,"height":241},
		{"id":"4b5773d19f4cebb6","type":"text","text":"counter - 1\nremove if > n","x":6513,"y":4023,"width":250,"height":97},
		{"id":"be985d65cd303561","type":"text","text":"counter - 1\nremove if < n","x":6860,"y":4023,"width":250,"height":97},
		{"id":"1f4118dbbfdacd47","type":"text","text":"Min","x":6574,"y":3811,"width":126,"height":62},
		{"id":"3a64bb26f14eb364","type":"text","text":"Max / Exact","x":6891,"y":3749,"width":219,"height":62},
		{"id":"c3192307445cfc1c","type":"text","text":"## Vec with fixed Index\nJust a vec but when remove replace with default. \nAnd store Index in a rotating vector.\nOR: \nhttps://crates.io/crates/fixed-index-vec","x":6952,"y":1917,"width":397,"height":320},
		{"id":"52096c8cf845fbca","type":"text","text":"## Nodes\nuses Vec keeps indecies. ","x":6052,"y":2248,"width":401,"height":112},
		{"id":"08ccfbc84c38c7ba","type":"text","text":"## Value Req (Enum with match Trait dispatch )\nhttps://crates.io/crates/enum_delegate\n\n","x":6374,"y":3069,"width":329,"height":184},
		{"id":"56e6bf39a0825c6d","type":"text","text":"## Node Values \nevery Node can have a set of values\n\nWill be added and removed often","x":6052,"y":2460,"width":420,"height":180},
		{"id":"4873f5352c074434","type":"text","text":"## All Values that requires it\nVec of Value Req pointers\n","x":6338,"y":2840,"width":401,"height":130},
		{"id":"88296ab3c1116e0b","type":"text","text":"## Werte andere Nodes \n- Node hat einen oder mehere Werte. \n- Node hat einen Wert nicht. ","x":3997,"y":880,"width":360,"height":236},
		{"id":"baa104f0b36f1c70","type":"text","text":"## Es gibt eine bestimmte Menge an Werten\n- Es gibt genau n Werte in dem ganzen Graph \n- Es gibt min oder max n Werte im ganzen Graph \n- Es gibt n Werte in einem Subset des Graphs","x":3997,"y":1180,"width":360,"height":360},
		{"id":"83433142d163a673","type":"text","text":"## Ein Object ist in der nähe \n-> custom function \n-> wann checkt man das???","x":3997,"y":1620,"width":360,"height":140},
		{"id":"cd1c92b618d975fb","type":"text","text":"## Ein eine bestimmte Zeit ist vergangen \n-> wann checkt man das???","x":4017,"y":1883,"width":340,"height":151},
		{"id":"b28fb3f937d8c026","type":"text","text":"## ECS\n[entity\\_data - Rust](https://docs.rs/entity_data/latest/entity_data/)\n[GitHub - rust-gamedev/ecs\\_bench\\_suite: A suite of benchmarks designed to test and compare Rust ECS library performance across a variety of challenging circumstances.](https://github.com/rust-gamedev/ecs_bench_suite?tab=readme-ov-file)","x":6952,"y":2360,"width":397,"height":400},
		{"id":"38c16ac750337572","type":"text","text":"## Min\nDer globale Node Wert hat einen Counter der speichert wie viele dieser Werte es gibt. ","x":4900,"y":1250,"width":335,"height":220},
		{"id":"0d3630ae332515bf","type":"text","text":"## Max / Exact\nHier müssen nicht die möglichen sondern. Gewählten Werte gezählt werden.","x":4900,"y":1510,"width":335,"height":210},
		{"id":"605c095a269517e5","type":"text","text":"Es gibt eine globale Node die einen Wert haben kann den es nur dann gibt, wenn diese Eigenschaft erfüllt ist. \nDen Node wert gibt es nur wenn es den globalen Node Wert gibt.","x":4501,"y":1201,"width":319,"height":319},
		{"id":"9d4541200f9b9493","type":"text","text":"Für jede Node die Werte enthalten sollte. Hat man einen Counter. \nWenn ein Wert gelöscht wird, wird der Counter bei allen Nodes die diesen Wert als Abhängigkeit haben reduziert.","x":4641,"y":690,"width":300,"height":330},
		{"id":"dc38680f774c0d20","type":"text","text":"## Populate World \n### Init\n1. Add value for one Node\n2. PushValue to Add Queue \n\n### Add tick \n1. Pop from Add Queue \n2. Go over all reqs of Value\n\t1. Get Req Node Identifier \n\t2. Get Req Node form Identifier\n\t\t1. Req Node dosen't has Value \n\t\t\t1. Add Req Value to Node \n\t\t\t2. Link Req Value as Req of Value\n\t\t\t3. Push Req Value to Add Queue  \n\t\t2. Req Node has Value \n\t\t\t3. Link Req Value as Req of Value\n","x":2800,"y":3170,"width":695,"height":670},
		{"id":"74de8041d96b2c56","type":"text","text":"Stone","x":4520,"y":3620,"width":140,"height":60},
		{"id":"95af983b93a64435","type":"text","text":"Grass","x":5014,"y":3620,"width":133,"height":58},
		{"id":"bc3b4de14d5d7cb3","type":"text","text":"Sand","x":4780,"y":3620,"width":126,"height":58,"color":"3"},
		{"id":"b591e4fe15a3074b","type":"text","text":"Other Value 1","x":4520,"y":3230,"width":200,"height":60},
		{"id":"4bda70f787fe0dad","type":"text","text":"Other Value 2","x":4942,"y":3230,"width":205,"height":60},
		{"id":"99964af9504697c3","type":"text","text":"## Populate World V2 \n### Init \n1. Add Value to Node \n3. Select Value for Node \n4. Go over Reqs of Value \n\t1. Get Req Node\n\t\t1. Req Node has no Value \n\t\t\t1. Add all possible Values \n\t\t2. Req Node already Values \n\t\t\t1. Add ","x":3600,"y":3180,"width":600,"height":670},
		{"id":"860798cc12945797","x":4300,"y":3980,"width":290,"height":156,"type":"text","text":"Unterschied zwischen den actuellen selcted Nodes und den letzten selected Nodes"},
		{"id":"dcb20b1641d19eed","x":3680,"y":3980,"width":540,"height":920,"type":"text","text":"## On Selected changed \n-> Value of one node is Selected\n1. Go over all Reqs of that Node \n\t1. Get req Node \n\t2. Node has old selected value \n\t\t1. If the old selected value in reqs\n\t\t\t1. Set old selected Value to new selcetd value\n\t\t\t\t-> Done \n\t\t1. If not \n\t\t\t1. Un select value \n\t\t\t2. Add all possible Values \n\t1. Node has no selected Value \n\t\t1. Keep all values that are shared \n\t\t\t1. Values are empty \n\t\t\t\t1. fail\n\t2. Node has selected Value\n\t\t1. Check if reqs contains selected value \n\t\t\t1. If not \n\t\t\t\t1. fail"},
		{"id":"6770aa323fe2f2c1","x":1580,"y":4440,"width":180,"height":60,"type":"text","text":"Change"},
		{"id":"c2f4df0f9b03712a","x":1580,"y":4540,"width":180,"height":60,"type":"text","text":"Change"},
		{"id":"23b3cc7068ae5839","x":1804,"y":4640,"width":180,"height":63,"type":"text","text":"Summary"},
		{"id":"55c58312863a7fb7","type":"text","text":"Change","x":1580,"y":4960,"width":180,"height":60},
		{"id":"071ecc46b2d769c1","type":"text","text":"Change","x":1580,"y":5060,"width":180,"height":60},
		{"id":"8f2e44fbc0280b52","type":"text","text":"Change","x":1580,"y":4860,"width":180,"height":60},
		{"id":"5f08072e6436b306","type":"text","text":"Change ","x":1580,"y":4760,"width":180,"height":60},
		{"id":"bc580a0358bd9e7a","x":1580,"y":4340,"width":180,"height":60,"type":"text","text":"Change"},
		{"id":"7accddff8ef524da","x":1580,"y":4240,"width":180,"height":60,"type":"text","text":"Change "},
		{"id":"1db7a70c00292f78","type":"text","text":"Summary","x":1804,"y":4120,"width":180,"height":63},
		{"id":"ae9b77281759e878","x":2200,"y":4384,"width":500,"height":99,"type":"text","text":"Every value for every node stores the Index of the change it has beed removed"},
		{"id":"5716e7f737fd55ca","x":2740,"y":4384,"width":255,"height":198,"type":"text","text":"If we want to select a value. We just go the the change and \nrestore from the last summary"},
		{"id":"906afc917860311b","x":1580,"y":3960,"width":180,"height":120,"type":"text","text":"## Saving old states and going back"},
		{"id":"9c6738192997aa1d","x":2200,"y":3880,"width":280,"height":180,"type":"text","text":"## History Node\n1 Bit if summary \n31 Change data \nor Summray Index"},
		{"id":"336cafc625427378","x":2200,"y":4117,"width":280,"height":183,"type":"text","text":"## Change \nNode Identifyer + removed Value Index\n-> 32 Bit sollte reichen"},
		{"id":"53e3e2ca3b58ee13","x":2520,"y":4120,"width":250,"height":183,"type":"text","text":"## Summary \nZustand der Welt"}
	],
	"edges":[
		{"id":"48a1b4ab86a3845c","fromNode":"f396b8fd229d6fc5","fromSide":"bottom","toNode":"a895bd7e0030a55d","toSide":"top","label":"Push"},
		{"id":"4f50c2bd4f7977a9","fromNode":"826f48f059caa3bc","fromSide":"bottom","toNode":"c2edce5cce8959e2","toSide":"top"},
		{"id":"b566cfb41bcacd2e","fromNode":"c2edce5cce8959e2","fromSide":"bottom","toNode":"7ea849cf0b4c04fd","toSide":"top"},
		{"id":"b5c6b739c41e77f2","fromNode":"7ea849cf0b4c04fd","fromSide":"bottom","toNode":"09aed826b0aebff0","toSide":"top"},
		{"id":"3f1c64eda766bcdd","fromNode":"a895bd7e0030a55d","fromSide":"right","toNode":"826f48f059caa3bc","toSide":"left","label":"Pop"},
		{"id":"ea790e17d0e6b24c","fromNode":"09aed826b0aebff0","fromSide":"left","toNode":"9f772a71e3a6da21","toSide":"right","label":"Push node"},
		{"id":"d248de4a7e48377a","fromNode":"09aed826b0aebff0","fromSide":"left","toNode":"fb2c31995527de0a","toSide":"right","label":"neighbors"},
		{"id":"760ea6ebe7c9dbd3","fromNode":"9f772a71e3a6da21","fromSide":"top","toNode":"fb2c31995527de0a","toSide":"bottom","label":"find"},
		{"id":"b5ea2e1751810a0e","fromNode":"fb2c31995527de0a","fromSide":"top","toNode":"a895bd7e0030a55d","toSide":"bottom","label":"No -> Push"},
		{"id":"7fb1fcdb4445bda5","fromNode":"a895bd7e0030a55d","fromSide":"top","toNode":"faa425043b0abfdf","toSide":"top"},
		{"id":"fba5b8f2561c54cd","fromNode":"faa425043b0abfdf","fromSide":"left","toNode":"c667e0af80120795","toSide":"right","label":"Yes"},
		{"id":"2e60cec970b1ffb3","fromNode":"d8118236d13e07c1","fromSide":"top","toNode":"04005278a5475222","toSide":"top"},
		{"id":"e15bc2118ee499d6","fromNode":"04005278a5475222","fromSide":"left","toNode":"6b57119655ceef13","toSide":"right","label":"Yes"},
		{"id":"c45bccf83bb845a2","fromNode":"2522ba1200bb6d2b","fromSide":"bottom","toNode":"5419f803241c32e4","toSide":"top"},
		{"id":"fc0f7df17d02fe9d","fromNode":"5419f803241c32e4","fromSide":"bottom","toNode":"011b73a084407bcd","toSide":"top"},
		{"id":"68e9738c3d4a9734","fromNode":"011b73a084407bcd","fromSide":"bottom","toNode":"c57772aa155f83f1","toSide":"top"},
		{"id":"eb3819ae173aa21f","fromNode":"09aed826b0aebff0","fromSide":"left","toNode":"d8118236d13e07c1","toSide":"right"},
		{"id":"edd16bfd38365d71","fromNode":"faa425043b0abfdf","fromSide":"bottom","toNode":"04005278a5475222","toSide":"top","label":"No"},
		{"id":"737e1bd5f14287c6","fromNode":"2875c5caafc74472","fromSide":"bottom","toNode":"faa425043b0abfdf","toSide":"top"},
		{"id":"ea6cc36d5931f27b","fromNode":"d8118236d13e07c1","fromSide":"right","toNode":"2522ba1200bb6d2b","toSide":"left","label":"Pop"},
		{"id":"2e10b343f7804864","fromNode":"c57772aa155f83f1","fromSide":"left","toNode":"d8118236d13e07c1","toSide":"bottom","label":"Push neighbors"},
		{"id":"6777de4cc275c328","fromNode":"167c4478db0641a3","fromSide":"right","toNode":"18225b94c5e1b7c4","toSide":"left","label":"Pop"},
		{"id":"1b4032de6594e35e","fromNode":"18225b94c5e1b7c4","fromSide":"bottom","toNode":"3e4928fc7470008b","toSide":"top"},
		{"id":"674f13b6c35e43f5","fromNode":"3e4928fc7470008b","fromSide":"bottom","toNode":"46136aaf0f7be7e1","toSide":"top"},
		{"id":"ae6acd3dfe5cf7b0","fromNode":"167c4478db0641a3","fromSide":"top","toNode":"03cc102e8eaf2c6d","toSide":"top"},
		{"id":"675a2e1178a28e82","fromNode":"03cc102e8eaf2c6d","fromSide":"left","toNode":"66723dedb7964eef","toSide":"right","label":"Yes"},
		{"id":"e480a67cb84ef268","fromNode":"03cc102e8eaf2c6d","fromSide":"bottom","toNode":"d4c3f771e567ad66","toSide":"top"},
		{"id":"44cebe916b1fe863","fromNode":"04005278a5475222","fromSide":"bottom","toNode":"03cc102e8eaf2c6d","toSide":"top","label":"No"},
		{"id":"c6c1dbe4cca56178","fromNode":"46136aaf0f7be7e1","fromSide":"left","toNode":"d8118236d13e07c1","toSide":"bottom"},
		{"id":"8c5a1e051143022a","fromNode":"c57772aa155f83f1","fromSide":"left","toNode":"08f5d1539f356b43","toSide":"right"},
		{"id":"97a2402e3cb1d900","fromNode":"08f5d1539f356b43","fromSide":"bottom","toNode":"167c4478db0641a3","toSide":"top","label":"No -> Push"},
		{"id":"a9a477cbc9e60087","fromNode":"2c8111af7bde8214","fromSide":"right","toNode":"08f5d1539f356b43","toSide":"left","label":"find"},
		{"id":"c0c54e8af58417d1","fromNode":"46136aaf0f7be7e1","fromSide":"left","toNode":"2c8111af7bde8214","toSide":"bottom","label":"Push node"},
		{"id":"dc5835cbb267f07e","fromNode":"f396b8fd229d6fc5","fromSide":"left","toNode":"9f772a71e3a6da21","toSide":"left","label":"Clear"},
		{"id":"4e2fd4288f023348","fromNode":"f396b8fd229d6fc5","fromSide":"left","toNode":"2c8111af7bde8214","toSide":"top","label":"Clear"},
		{"id":"e58a2e048752fb87","fromNode":"c352e27a9e6041a7","fromSide":"right","toNode":"79065c1952065257","toSide":"left","label":"Ref to Counter"},
		{"id":"7b947839bfb48866","fromNode":"88296ab3c1116e0b","fromSide":"right","toNode":"9d4541200f9b9493","toSide":"left"},
		{"id":"cccffc31cd91988e","fromNode":"9d4541200f9b9493","fromSide":"right","toNode":"e2bd8a50684fb20e","toSide":"left"},
		{"id":"d9ba1d83c79927f3","fromNode":"baa104f0b36f1c70","fromSide":"right","toNode":"605c095a269517e5","toSide":"left"},
		{"id":"71d0daa431dcb6ee","fromNode":"605c095a269517e5","fromSide":"right","toNode":"38c16ac750337572","toSide":"left"},
		{"id":"013896210e7cf0db","fromNode":"38c16ac750337572","fromSide":"top","toNode":"9d4541200f9b9493","toSide":"bottom","label":"gleiches System"},
		{"id":"645da5e5d4aa21b4","fromNode":"605c095a269517e5","fromSide":"right","toNode":"0d3630ae332515bf","toSide":"left"},
		{"id":"d7e6a71d69ef9501","fromNode":"0d3630ae332515bf","fromSide":"right","toNode":"73ae54d550a97422","toSide":"left"},
		{"id":"ea5864de277e8b7c","fromNode":"73ae54d550a97422","fromSide":"bottom","toNode":"b0247e0d009763a1","toSide":"top"},
		{"id":"127a7c44bc2718e2","fromNode":"83433142d163a673","fromSide":"right","toNode":"67e08a61d7203552","toSide":"left"},
		{"id":"6af16ad6503988e7","fromNode":"0758186de3049c59","fromSide":"bottom","toNode":"e5e9e2377c5e6771","toSide":"top"},
		{"id":"78cee9b9d29ff914","fromNode":"0758186de3049c59","fromSide":"bottom","toNode":"820c1c2e54c52f7e","toSide":"top"},
		{"id":"137bdaf7dd3bd74e","fromNode":"d17bab29015b0a01","fromSide":"right","toNode":"83433142d163a673","toSide":"left"},
		{"id":"664aa4b30f7ec81e","fromNode":"d17bab29015b0a01","fromSide":"right","toNode":"cd1c92b618d975fb","toSide":"left"},
		{"id":"2cebf3eacf890ae3","fromNode":"67e08a61d7203552","fromSide":"right","toNode":"0758186de3049c59","toSide":"top"},
		{"id":"7e667458ba863f05","fromNode":"52096c8cf845fbca","fromSide":"right","toNode":"c3192307445cfc1c","toSide":"left"},
		{"id":"58ac465d7330b2fe","fromNode":"56e6bf39a0825c6d","fromSide":"right","toNode":"b28fb3f937d8c026","toSide":"left"},
		{"id":"353e2215945947c3","fromNode":"56e6bf39a0825c6d","fromSide":"bottom","toNode":"4873f5352c074434","toSide":"top"},
		{"id":"62d02ca74f3ebc1a","fromNode":"4873f5352c074434","fromSide":"bottom","toNode":"08ccfbc84c38c7ba","toSide":"top"},
		{"id":"bb463391db1e38a2","fromNode":"08ccfbc84c38c7ba","fromSide":"bottom","toNode":"b4dc129d7947221f","toSide":"top"},
		{"id":"f0174535b3e9bfcb","fromNode":"b4dc129d7947221f","fromSide":"bottom","toNode":"693b437e8415f153","toSide":"top"},
		{"id":"b71c8d4a014bccf2","fromNode":"08ccfbc84c38c7ba","fromSide":"bottom","toNode":"4227e4b982dcf561","toSide":"top"},
		{"id":"688acc6c8dfb25bc","fromNode":"56e6bf39a0825c6d","fromSide":"left","toNode":"fb6ba01fdcda4ad1","toSide":"top"},
		{"id":"7877727ff42c48f8","fromNode":"56e6bf39a0825c6d","fromSide":"left","toNode":"4a746bd80dc4012d","toSide":"right"},
		{"id":"c318d4eca557583b","fromNode":"56e6bf39a0825c6d","fromSide":"left","toNode":"d28968b5f7e8c543","toSide":"top"},
		{"id":"ea04766a9d0303a7","fromNode":"fb6ba01fdcda4ad1","fromSide":"bottom","toNode":"693b437e8415f153","toSide":"left"},
		{"id":"4fa87b018b5a4101","fromNode":"4227e4b982dcf561","fromSide":"bottom","toNode":"1f4118dbbfdacd47","toSide":"top"},
		{"id":"a6227d766f8dc682","fromNode":"4227e4b982dcf561","fromSide":"bottom","toNode":"3a64bb26f14eb364","toSide":"top"},
		{"id":"1e9b1a51bcf6f2b9","fromNode":"fb6ba01fdcda4ad1","fromSide":"right","toNode":"4b5773d19f4cebb6","toSide":"top"},
		{"id":"ab6125f813ddd990","fromNode":"1f4118dbbfdacd47","fromSide":"bottom","toNode":"4b5773d19f4cebb6","toSide":"top"},
		{"id":"668157f7452996d8","fromNode":"d28968b5f7e8c543","fromSide":"bottom","toNode":"be985d65cd303561","toSide":"top"},
		{"id":"2af21ca3e40a3abd","fromNode":"3a64bb26f14eb364","fromSide":"bottom","toNode":"be985d65cd303561","toSide":"top"},
		{"id":"7e15a3b30249bac9","fromNode":"74de8041d96b2c56","fromSide":"right","toNode":"bc3b4de14d5d7cb3","toSide":"left","toEnd":"none","label":"or"},
		{"id":"79ab422cb38cc754","fromNode":"bc3b4de14d5d7cb3","fromSide":"right","toNode":"95af983b93a64435","toSide":"left","toEnd":"none","label":"or"},
		{"id":"c551e785263edf89","fromNode":"bc3b4de14d5d7cb3","fromSide":"top","toNode":"b591e4fe15a3074b","toSide":"bottom","label":"2"},
		{"id":"5a6f4e38b0c686be","fromNode":"74de8041d96b2c56","fromSide":"top","toNode":"b591e4fe15a3074b","toSide":"bottom","label":"2"},
		{"id":"36e7b3fc7595110d","fromNode":"bc3b4de14d5d7cb3","fromSide":"top","toNode":"4bda70f787fe0dad","toSide":"bottom","label":"2"},
		{"id":"90cdedd69862e855","fromNode":"95af983b93a64435","fromSide":"top","toNode":"4bda70f787fe0dad","toSide":"bottom","label":"2"},
		{"id":"72f91ceedb90d72c","fromNode":"7accddff8ef524da","fromSide":"bottom","toNode":"bc580a0358bd9e7a","toSide":"top"},
		{"id":"d76fa45605c61ec5","fromNode":"bc580a0358bd9e7a","fromSide":"bottom","toNode":"6770aa323fe2f2c1","toSide":"top"},
		{"id":"efa6c3d16f91999c","fromNode":"6770aa323fe2f2c1","fromSide":"bottom","toNode":"c2f4df0f9b03712a","toSide":"top"},
		{"id":"4641c2502b6492f9","fromNode":"c2f4df0f9b03712a","fromSide":"bottom","toNode":"23b3cc7068ae5839","toSide":"top"},
		{"id":"197843f63a493f56","fromNode":"55c58312863a7fb7","fromSide":"bottom","toNode":"071ecc46b2d769c1","toSide":"top"},
		{"id":"bc286451392ae15a","fromNode":"8f2e44fbc0280b52","fromSide":"bottom","toNode":"55c58312863a7fb7","toSide":"top"},
		{"id":"60d294f263e4b279","fromNode":"5f08072e6436b306","fromSide":"bottom","toNode":"8f2e44fbc0280b52","toSide":"top"},
		{"id":"eebaf5c5ca98a43f","fromNode":"23b3cc7068ae5839","fromSide":"bottom","toNode":"5f08072e6436b306","toSide":"top"},
		{"id":"c862157493d2e03d","fromNode":"1db7a70c00292f78","fromSide":"bottom","toNode":"7accddff8ef524da","toSide":"top"}
	]
}