Browse Source

비트코인에 대한 얘기 수정

iwanhae 3 years ago
parent
commit
4b185d4eea
5 changed files with 928 additions and 12 deletions
  1. 1 2
      2_비트코인에대한얘기.md
  2. 41 10
      6_블록체인.md
  3. 59 0
      Backup/2_비트코인에대한얘기_백업.md
  4. BIN
      img/6_1.png
  5. 827 0
      img/6_1.svg

File diff suppressed because it is too large
+ 1 - 2
2_비트코인에대한얘기.md


+ 41 - 10
6_블록체인.md

@@ -20,18 +20,49 @@
 
 블록은 다음표와 같은 데이터 구조를 가진다.
 
-| 크기                                       | 이름                                       | 설명                                      |
-| ---------------------------------------- | ---------------------------------------- | --------------------------------------- |
-| 4Byte                                    | Magic no                                 | 언제나 0xD9B4BEF9 를 가지는것으로 정해져있다.          |
-| 4Byte                                    | Blocksize                                | 블록의 총 크기가 몇바이트인지에 대한 정보가 담겨있다.          |
-| 80Byte                                   | Blockheader                              | 블록헤더                                    |
-| Transaction counter                      | positive integer [VI = VarInt](https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer) | 1 - 9 bytes                             |
-| [transactions](https://en.bitcoin.it/wiki/Transactions) | the (non empty) list of transactions     | <Transaction counter>-many transactions |
-
-
+| 크기      | 이름                  | 설명                             |
+| ------- | ------------------- | ------------------------------ |
+| 4Byte   | Magic no            | 언제나 0xD9B4BEF9 를 가지는것으로 정해져있다. |
+| 4Byte   | Blocksize           | 블록의 총 크기가 몇바이트인지에 대한 정보가 담겨있다. |
+| 80Byte  | Blockheader         | 블록헤더                           |
+| 1~9Byte | Transaction counter | 해당 블록에 포함되는 Tx의 개수             |
+| 가변적     | transactions        | 각 사용자가 생성한 Tx들이 직렬화되어 들어있다.    |
+
+그 다음으로 블록헤더는 다음과 같은 데이터 구조를 가진다.
+
+| 크기     | 이름             | 설명                                    |
+| ------ | -------------- | ------------------------------------- |
+| 4Byte  | Version        | 블록 버전에 대한 정보가 담겨있다.                   |
+| 32Byte | hashPrevBlock  | 이전 블록 헤더의 해시값이 담겨있다.                  |
+| 32Byte | hashMerkleRoot | 블록 바디의 머클 트리로부터 나온 머클루트값이 담겨있다.       |
+| 32Byte | Time           | 유닉스 타임스탬프를 사용한다.                      |
+| 4Byte  | nBits          | 이 블록헤더의 해시값이 충족해야할 조건에대한 정보가 담겨있다.    |
+| 4Byte  | Nonce          | nBits를 만족시키기위해 채굴자가 마음대로 조작가능한 공간이다.. |
 
 ### 머클트리
 
  필자가 처음 블록바디에 대해 알아보려 했을때는 C언어에서 흔히 쓰는 배열처럼 그냥 추가하려는 Tx들을 나열해 놓으면 되지 않을까?라는 생각을 했었다. 결론은 맞았다. 하지만 한가지 추가되는 내용이 있었는데 바로 머클트리의 존재였다.
 
- 머클트리는 앞서 다뤘던 SPV노드에서 어떤 거래에 대하여 효율적으로 검증하기 위해 
+ 머클트리는 랄프 머클(Ralph Merkle) 이라는 사람이 "Method of providing digital signatures"라는 제목으로 밝힌 특허에서 처음 공개되었다. 
+
+```mermaid
+graph BT
+Tx1-->H1["H1:Hash(Tx1)"]
+Tx2-->H2["H2:Hash(Tx2)"]
+Tx3-->H3["H3:Hash(Tx3)"]
+Tx4-->H4["H4:Hash(Tx4)"]
+H1-->H12["H12:Hash(H1+H2)"]
+H2-->H12
+H3-->H34["H34:Hash(H3+H4)"]
+H4-->H34
+H12-->H1234["H1234: Hash(H12+H34)"]
+H34-->H1234
+
+
+```
+
+ 머클트리를 만들기위한 과정은 다음과 같다. 일단 가장먼저 블록에 저장된 각각의 Tx으로부터 해시값을 구한다. 여기서 사용되는 해시함수는 SHA256d로 Tx전체 데이터에대하여 SHA2를 두번돌린 값이다. 이렇게 Tx1부터 Tx4까지 각각 해시값을 구해냈으면 다음과정은  H1이라는 해시값 뒤에다가 H2를 붙혀 탄생한 새로운 데이터의 해시값 H12을 구한다. 같은과정을 H3, H4 쪽에도 행해준다. 마지막으로 H12라는 해시값 뒤에다가 H34를 붙혀 탄생한 새로운 데이터의 해시값 H1234를 구한다...... 이 과정은 최상위에 딱 하나의 노드가 남을 때까지 반복되며 이렇게 마지막으로 하나남은 노드를 머클루트라 하며, 이렇게 완성된 머클루트는 블록헤더에 블록바디 전체의 데이터를 보증해주는 역할로 저장된다.
+
+ 다만 
+
+ 

+ 59 - 0
Backup/2_비트코인에대한얘기_백업.md

@@ -0,0 +1,59 @@
+# 비트코인에 대한 얘기
+
+## 비트코인이란 무엇일까?
+
+ 비트코인은 여러가지 형태로 불린다. 세계최초의 암호화폐처럼 그 진위여부를 즉각적으로 판단할 수있는것 부터, 전세계에서 하고있는 도박이라는 부정적인 시야도 있고 심지어는 4차 산업혁명을 앞당긴 주역처럼 엄청나게 긍정적인 시야도 있다. 하지만 인터넷은 상용화된지 20~30년이 넘어가고 있고 그동안 많은 전자화폐가 생겨나고 사라졌는데 왜 비트코인은 유명해 졌을까?
+
+ 일반적으로 볼 때 비트코인은 그냥 평범한 전자화폐랑 다른 것이 없어 보인다. PayPal같은 것을 생각해보자. 송금을 통해 PayPal을 충전하고 사용하면 인터넷 돌아다니다가 자신이 원하는 것을 발견하면 클릭 몇 번으로 즉각 구매할 수 있다. 비트코인도 마찬가지로 계좌를 만들고 비트코인을 구매한후 인터넷을 돌아다니다가 자신이 원하는 것을 발견하면 클릭 몇 번으로 즉각 구매할 수 있다. 하지만 단지 그것뿐이라면 세상이 비트코인에 열광했을 리가 없을 것이다. 사실 편리성을 따지면 PayPal을 충전할 필요도 없이 그냥 카드 등록하고 쓰는게 제일 편하고, 송금도 어렵게 비트코인을 살 필요없이 그냥 인터넷뱅킹 쓰는게 더 빠르다. 그럼 왜 세상은 비트코인에 열광했을까?
+
+ 그 이유로는 여러가지가 있겠지만 필자가 생각하기에 가장 큰 이유는 기존 화폐와는 대비되는 전혀 새로운 방식의 안정성과 고정적인 요금만 받는 수수료 시스템에 있다고 생각한다.
+
+ 일단 전혀 새로운 방식의 안정성에 대해 얘기해보자. 우리가 쓰는 국가에서 발행해주는 화폐는 (KRW나 USD같은) 겉보기에는 매우 안정적인 자산처럼 보이지만 사실 그 가치는 한 권력자에 의해 심하게 변동될 수 있다. 대표적인 예로 1차세계대전 직후 독일을 보자. 1차세계대전동안 흥청망청 돈을 뽑아 전쟁을 벌였던 독일정부는 놀랍게도 종전 직후 3년만에 당시 독일의 화폐 마르크화의 가치를 1조배나 폭락시켜버렸다. 무슨말이냐면 돈 그 자체의 가치가 하락해 5천원짜리 빅맥세트가 5천조원이 되버렸다는것이다. 이로인해 당시 독일은 떌감을 살 돈을 태우는게 오히려 이득이라는 현상까지 발생했으며 당시 돈의 가치는 말그대로 휴지조각보다 못한 상태가 되어버렸다. 물론 지금과 같은 금융시스템이 없던 근대에 일어난 일이었지만, 그럼 현대의 화폐 가치는 안정적인것일까? 아쉽게도 그렇지 않아 보인다. 2012년 아베노믹스의 경우를 보자. 당시 일본총리 아베는 일본내 장기불황을 타파하기위해 무제한 양적완화, 즉 돈을 무제한으로 찍어내는 정책을 실시했다. 이러한 정책의 효과나 의의에 대해서는 말이 많지만 결과를 보면 2012년 7월 100엔에 1,477원하던 엔화가치가 불과 3년도 안되서 100엔에 885원이라는 엔화의 가치에 엄청난 변화를 일으켰고 이 현상으로부터 우리는 국가가 발행한 통화라도 한 권력자의 의지만으로도 그 가치가 크게 변할 수 있다는 사실을 알아낼 수 있다. 그 뿐 아니라 인터넷뱅킹이나 간편결제시스템에서 사용되는 전자화폐들도 그 화폐를 관리하는 중앙기관이 파산 혹은 화폐 포기 선언을 해버리면 그 화폐의 가치는 순식간에 증발해 버리는 것이다.
+
+ 그럼 비트코인은 다른가? 그렇다. 다르다. 위 예시의 근본적인 문제는 모두 화폐의 가치가 발행주체 혹은 그와 유사한 중앙기관의 입맛따라 변동될 수 있다는 것이다. 반면 비트코인은 이러한 중앙기관이 존재하지 않는다. 굳이 따지자면 누구나 될 수있는 채굴자들의 의지에 따라 위 예시처럼 비트코인의 가치를 변동 시킬수는 있지만 전세계에 걸쳐 최소 10만명 이상 존재할 것으로 예상되는 비트코인 채굴자들이 동시에 같이 합심하고 움직여야만 가능하고 그중 하나가 비트코인의 가치를 변동시키려 해봤자 나머지 채굴자들에 의해 묻혀버린다. 이게 비트코인이 가지는 분산적인 구조라는 것이다. 비트코인에서 화폐의 가치를 변화시키는 권한은 다른 화폐처럼 어떠한 특정한 기관이 가지는것이 아니라 비트코인 사용자 전부가 가지게 된다. 이는 비트코인에서 블록체인이라는 형태로 구현되어 있으며 이에대한 내용은 이 책 후반에서 다룰 예정이다.
+
+ 그 다음으로는수수료에 대해서 얘기해보자. 우리나라는 비교적 송금 혹은 구매 수수료의 제약으로부터 자유로운 나라에속한다. 일단 은행이체도 타행으로 얼마를 이체를 하던 높아봤자 천원 근처이며 그나마도 은행에서 주는혜택을 잘만 이용하면 수수료가 면제 된다. 하지만 이는 국내에서 국내로의 거래 얘기이며 해외구매의 경우,혹은 해외로 송금하는 경우는 어떨까? 일단 해외 이체의 경우 기본으로 수천원을 수수료를지불하고 그후 송금 금액에 따라 더 많은 수수료를 요구하기도 하며 해외 결제의 경우 사정이 좀 낫기는 하지만 그래도 환전수수료를 포함에서 약 2% 이상의 수수료를 지불해야 된다. 10만원의 2%가 2천원이라는점을 생각할 때 결코 적어 보이는 금액은 아니다. 여기서 비트코인이 수수료를 받아가는 방식은 일반적인 수수료 지불방식과 조금 색다르다. 일반적인 수수료 지불이 금액에 따라서 그 값이 달라진다면 비트코인의 수수료는 블록체인에서 차지하는 공간, 즉 거래가 몇 Byte를 차지하는지에 따라 수수료가 달라진다. 비트코인은 다양한 종류의 거래가 가능하지만 개인이 사용하는 범주에서는 한 건의 거래가 일반적으로 약 226Byte의 크기를 차지하며 대략 2천원 정도면 바로 다음블록에, 천원정도면 대략 1시간 안에는 블록에 포함되어 거래가 인정받을 수있으며 급한거래가 아닐경우 그보다 훨씬 적은 수수료만 지불하고 천천히 거래를 인정받을 수도 있다. 이러한 비트코인의 수수료 정책을 생각해볼 때 거래하는 돈의 크기가 커지면 커질수록 비트코인으로의 송금이 훨씬 유리해진다는 것을 알 수 있다.
+
+ 이러한 금융기관대비 유리한 수수료 정책과 비트코인 사용자가 나눠가지는 비트코인 그 자체에대한 권한은 2009년 막 시작한 비트코인의 위상을 하늘을 찌르게 만들어주었고 그와 함께 비트코인을 따라하는 수많은 전자화폐를 만들어 내었다. 하지만 이러한 비트코인은 어떻게 탄생하게 되었을까?
+
+## 비트코인의 역사
+
+2008년 10월 31일사토시 나가모토라는 닉네임을 가진 유저가 “Bitcoin: A Peer-to-Peer ElectronicCash System”라는 제목으로 소논문을 하나 공개하였다. 불과 9페이지에 불구한 이 논문에는 블록체인, 거래의 진행, 최소한의 저장공간으로 거래를 증명하는 법부터 이러한구조가 왜 안전한지, 이렇게 했을 때 예상되는 취약점은 무엇인지까지 현재 사용되고있는 비트코인의 아주 핵심적인 내용이 전부 담겨있었다. 같은 해 11월 9일 프로그래머들이 오픈소스 소프트웨어를 개발할 때 자주 쓰이는 SourceForge라는사이트에 이 논문을 기반으로 bitcoin이라는 이름의 첫 프로젝트를 시작하였다. 그리고 바로 그 다음해 2009년 1월 3일 오후 6시 15분경 우리를 놀라게하고 전세계가 관심을 가진 대망의 비트코인의 첫번째 블록이 완성되었다. 이것이 바로 비트코인의시작이다.
+
+물론 비트코인시작 초기에는 별로 사람들의 시선을 끌지는 못했다. 심지어는 약 매10분마다 하나의 블록이 생성되도록 약속 해놓고도 비트코인 채굴을 하는 컴퓨터가 없어서 약 1주일간은그 약속이 지켜 지지도 않았고 이론적으로 매년 50GB증가해야하는 블록체인의 크기가 1GB를 처음 넘긴것은 첫블록 생성후 3년이 지난 2012년 5월경 이었다. 그러다가 2010년이 되면서 1만BTC로 라지사이즈 피자 2판을거래한 사람을 시작으로 최초의 비트코인 거래소, 최초의 마이닝 풀 등이 생겨 나가기 시작하더니 2011년에는 미국 TIMES에 위키리크스의 후원수단의 방법 중 하나로서비트코인이 소개되며 착실히 그 위상을 높혀나가고 2013년 그 가치가 폭등하면서 결국에는 우리나라에까지대대적으로 알려졌다. 물론 사이트가 해킹 당해서 비트코인이 도난 당했다 같은 사건도 여러 번 발생했지만 이렇게 수많은 사람들이 관심을 가지고 수많은 해커가 비트코인의 결함을 찾으려고 노력했음에도 불구하고 결국 그들이 해킹한것 (혹은 해킹당한것)은 비트코인을 거래하는 거래소이지, 한번도 비트코인 그 자체에 대한 공격이 성공한적이 없었다는 점을 생각해볼때 비트코인의 구조적인 안정성은 완벽하며 그 이유를 책 전반에 거쳐 설명할 예정이다. 이렇게 2017년기준 약 8년간 실제 운영하면서 그 안정성을 입증해온 비트코인은 현재 컴퓨터과학 뿐이 아닌 다양한 분야에서기존에는 존재하지 않았던 새로운 시스템의 개발에 큰 영감을 주어 현대사에까지 큰 한발자국을 남긴 가상 화폐라 개인적으로 생각한다.
+
+## 비트코인의 현황
+
+ 2017년 현재 비트코인의 시세는 하룻밤만에 10%가 변동되기도 하면서 매우 요동치고 있는 불안정한 자산이어서 아무도 비트코인의 미래를 예측하지 못하는 상황이다. 다만 비트코인은 자산적인 가치만을 지닌것이 아니며 특히 기술적가치의 경우 현재 매우 촉망받는다고 할 수 있다. 일단 대표적인 예가 블록체인이다. 블록체인이란 방법은여태껏 신뢰할 만한 기관없이 유저와 유저 간의 거래 시 누군가가 부정을 일으키면 그 부정을 어떻게 방지 혹은 파악할 수 있는가? 라는 의문에 대한 명쾌한 해결책을 제시해 주었다. 이러한 방법은 은행간 장부거래부터 iot기기간의 데이터 공유까지 적용될 수 있는 분야가 말그대로 무궁무진하며, 여기서 끝이 아니라 비트코인에서 사용된 스크립트 방식의 서명이나 ECDSA같은암호화방식, P2P 통신의 구현방식은 이미 알려진 방식이긴 하지만 비트코인에서 수년간 문제없이 사용되 오면서 그 유용성을다시한번 확인할 수 있다.
+
+ 비록 이 책에서 비트코인의 모든 기술적 가치에 대하여 상세히 설명해주기는 힘들겠지만 부디 편한마음으로 읽어 향후 관련분야에 연구할때 비트코인의 아이디어를 응용해 사용하게 되었으면 하는 바람이다. :)
+
+## 비트코인의 짧막한 지식
+
+### 트랜젝션
+
+ 비트코인을 이용해 누군가와 거래를 하면 송금하는 자의 디바이스에서는 **트랜젝션(Transactions)**이라 불리는 거래 데이터를 만들어낸다. 이 데이터에는 누가 누구에게 얼만큼의 비트코인을 보내는지에대한 정보가 담겨있다.
+
+### 블록
+
+ 채굴이란 비트코인 네트워크에서 발생한 트랜젝션을 모아서 하나의 블록을 만들고 만든 블록을 블록체인에 포함되도록 만들어주는 과정을 말한다. 블록은 약 매 10분마다 하나씩 발생하며 1MB의 크기가 넘지 않도록 되어있으며 평균적으로 약 1000건의 트랜젝션이 포함된다.
+
+### 블록체인
+
+ n번째 블록이 n-1번쨰 블록이 위조되지 않았음을 증명해주는 형태로 그 모습이 블록을 체인으로 엮어논것 같다는 의미로 붙어진 이름이다.
+
+### 비트코인 주소
+
+ 은행에서 통장을 통해 거래를 할때 필요한것이 계좌번호라면 비트코인에서 거래할 때 필요한것은 비트코인 주소이다. 필자의 비트코인 주소의 경우 19iZnngPRx7Tcf5ydAyiFGp97SavWCPg7y 이런식으로 생겼으며 대게 처음 문자는 1, 그 다음은 임의의 숫자와 문자가 섞여있는 형태이다. 그 이유에 대해서는 ***비트코인 주소*** 에서 상세하게 다룬다.
+
+### 채굴
+
+ 비트코인에서의 거래가 승인되는 시점은 트렌젝션을 만들때가 아닌 해당 트렌젝션이 블록체인에 포함될때를 말한다. 채굴과정이란 트렌젝션이 포함된 블록을 블록체인속에 포함시키는 과정을 의미한다. 블록을 완성해 블록체인에 포함시키는데 성공할 경우 그 보상으로 채굴자는 일정량의 비트코인을 얻을 수 있다.
+
+### 지갑
+
+ 비트코인에서는 보안을 위해 한번 사용한 비트코인 주소는 버릴것을 권장한다. 다만 그러면 내가 지금 가지고 있는 비트코인을 알아보기위해 여태껏 사용해온 비트코인 주소와 비트코인 주소의 소유주임을 증명해줄 비밀키를 모두 기록해둬야한다. 이러한 정보들을 관리하는데 **지갑**이라는 소프트웨어가 사용된다.
+
+### Bitcoin Core
+
+ 비트코인을 사용할 수 있는법은 다양하다. 스마트폰 앱으로 구현되어 있는 비트코인 지갑을 사용할 수도 있고 웹에 구현되어 있는 비트코인 지갑을 사용할 수도 있으나, 이 모든 지갑 소프트웨어의 원조이자 지금은 레퍼런스처럼 자리잡은 것이 Bitcoin Core이다.  

BIN
img/6_1.png


+ 827 - 0
img/6_1.svg

@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="2200"
+   height="1400"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="merkel_tree.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path4733"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-8"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-9"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-89"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-97"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-1"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-4"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-5"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-3"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-4"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-5"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-6"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-7"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-43"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-71"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-892"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend-17"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4733-91"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.43504828"
+     inkscape:cx="987.39301"
+     inkscape:cy="465.83804"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-bbox="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:snap-midpoints="true"
+     inkscape:window-width="2880"
+     inkscape:window-height="1596"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,347.63785)">
+    <rect
+       style="fill:none;stroke:#cccccc;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:16,16;stroke-dashoffset:0"
+       id="rect5321"
+       width="2127.5862"
+       height="214.54654"
+       x="35.757782"
+       y="740.79034" />
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="1961.1633"
+       y="832.76489"
+       id="text2985"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan2987"
+         x="1961.1633"
+         y="832.76489">Data</tspan><tspan
+         sodipodi:role="line"
+         x="1961.1633"
+         y="882.76489"
+         id="tspan2989">Blocks</tspan></text>
+    <g
+       id="g4664"
+       transform="translate(1934.1694,-90.49974)">
+      <g
+         transform="translate(-1743.0413,-71.25646)"
+         id="g4196">
+        <g
+           id="g4028">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="1266.3337"
+           y="313.27774"
+           id="text3045"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3047"
+             x="1266.3337"
+             y="313.27774">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="1266.3337"
+             y="363.27774"
+             id="tspan3049">1</tspan></text>
+        <g
+           id="g3152"
+           transform="translate(350.09264,161.55386)">
+          <text
+             sodipodi:linespacing="76.999998%"
+             id="text3075-3"
+             y="250.69946"
+             x="955.33728"
+             style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:76.99999809%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+             xml:space="preserve"><tspan
+               y="250.69946"
+               x="955.33728"
+               id="tspan3077-4"
+               sodipodi:role="line">Hash 1-0</tspan><tspan
+               id="tspan3079-3"
+               y="266.09946"
+               x="955.33728"
+               sodipodi:role="line">+</tspan><tspan
+               id="tspan3081-2"
+               y="281.49945"
+               x="955.33728"
+               sodipodi:role="line">Hash 1-1</tspan></text>
+          <text
+             sodipodi:linespacing="125%"
+             id="text3083-5"
+             y="269.86703"
+             x="917.06927"
+             style="font-size:32px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+             xml:space="preserve"><tspan
+               y="269.86703"
+               x="917.06927"
+               id="tspan3085-2"
+               sodipodi:role="line">hash(                  )</tspan></text>
+        </g>
+      </g>
+      <g
+         transform="translate(-2206.7709,-71.25646)"
+         id="g4181">
+        <g
+           transform="translate(-464.90308,0)"
+           id="g4028-4">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252-7"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="801.43073"
+           y="312.99454"
+           id="text3039"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3041"
+             x="801.43073"
+             y="312.99454">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="801.43073"
+             y="362.99454"
+             id="tspan3043">0</tspan></text>
+        <g
+           id="g3160"
+           transform="translate(548.85588,-79.555055)">
+          <text
+             sodipodi:linespacing="76.999998%"
+             id="text3075"
+             y="491.80838"
+             x="288.40152"
+             style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:76.99999809%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+             xml:space="preserve"><tspan
+               y="491.80838"
+               x="288.40152"
+               id="tspan3077"
+               sodipodi:role="line">Hash 0-0</tspan><tspan
+               id="tspan3079"
+               y="507.20837"
+               x="288.40152"
+               sodipodi:role="line">+</tspan><tspan
+               id="tspan3081"
+               y="522.6084"
+               x="288.40152"
+               sodipodi:role="line">Hash 0-1</tspan></text>
+          <text
+             sodipodi:linespacing="125%"
+             id="text3083"
+             y="510.97595"
+             x="253.40295"
+             style="font-size:32px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+             xml:space="preserve"><tspan
+               y="510.97595"
+               x="253.40295"
+               id="tspan3085"
+               sodipodi:role="line">hash(                  )</tspan></text>
+        </g>
+      </g>
+    </g>
+    <g
+       id="g4211"
+       transform="translate(-143.70269,-243.31865)">
+      <g
+         id="g4028-2"
+         transform="translate(-129.48551,-264.17944)">
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+           id="rect3252-5"
+           width="406.85141"
+           height="219.51587"
+           x="1063.8065"
+           y="259.20322" />
+        <rect
+           style="fill:#ffeeaa;stroke:none"
+           id="rect3176-0"
+           width="358.5809"
+           height="75.853653"
+           x="1085.9418"
+           y="382.17807" />
+      </g>
+      <g
+         transform="translate(224.35359,88.884027)"
+         id="g3168">
+        <text
+           xml:space="preserve"
+           style="font-size:20px;font-style:normal;font-weight:normal;text-align:center;line-height:76.99999809%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="952.96442"
+           y="57.920727"
+           id="text3114"
+           sodipodi:linespacing="76.999998%"><tspan
+             sodipodi:role="line"
+             id="tspan3116"
+             x="952.96442"
+             y="57.920727">Hash 0</tspan><tspan
+             sodipodi:role="line"
+             x="952.96442"
+             y="73.320724"
+             id="tspan3118">+</tspan><tspan
+             sodipodi:role="line"
+             x="952.96442"
+             y="88.720726"
+             id="tspan3120">Hash 1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:32px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="911.32281"
+           y="77.088303"
+           id="text3083-1"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3085-1"
+             x="911.32281"
+             y="77.088303">hash(                  )</tspan></text>
+      </g>
+      <text
+         sodipodi:linespacing="125%"
+         id="text3051"
+         y="72.90905"
+         x="1138.8698"
+         style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           y="72.90905"
+           x="1138.8698"
+           id="tspan3053"
+           sodipodi:role="line">Top Hash</tspan></text>
+    </g>
+    <g
+       id="g4626"
+       transform="translate(1934.1694,-82.74421)">
+      <g
+         transform="translate(16.687547,0)"
+         id="g4312">
+        <g
+           transform="translate(-2920.5197,266.72986)"
+           id="g4028-4-8">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252-7-5"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-9"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1654.1859"
+           y="580.18768"
+           id="text3007"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3009"
+             x="-1654.1859"
+             y="580.18768">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="-1654.1859"
+             y="630.18768"
+             id="tspan3015">0-0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1723.4203"
+           y="702.64142"
+           id="text3055"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3057"
+             x="-1723.4203"
+             y="702.64142">hash(L1)</tspan></text>
+      </g>
+      <g
+         transform="translate(31.697531,0)"
+         id="g4302">
+        <g
+           transform="translate(-2471.2134,266.72986)"
+           id="g4028-4-70">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252-7-97"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-32"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1204.8796"
+           y="580.18768"
+           id="text3017"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3019"
+             x="-1204.8796"
+             y="580.18768">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="-1204.8796"
+             y="630.18768"
+             id="tspan3021">0-1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1274.114"
+           y="702.64142"
+           id="text3059"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3061"
+             x="-1274.114"
+             y="702.64142">hash(L2)</tspan></text>
+      </g>
+      <g
+         transform="translate(46.707476,0)"
+         id="g4292">
+        <g
+           transform="translate(-2021.907,266.72986)"
+           id="g4028-4-22">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252-7-08"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-5"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-755.57324"
+           y="580.18768"
+           id="text3023"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3025"
+             x="-755.57324"
+             y="580.18768">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="-755.57324"
+             y="630.18768"
+             id="tspan3029">1-0</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-824.80762"
+           y="702.64142"
+           id="text3063"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             x="-824.80762"
+             y="702.64142"
+             id="tspan3067">hash(L3)</tspan></text>
+      </g>
+      <g
+         transform="translate(61.71756,0)"
+         id="g4282">
+        <g
+           transform="translate(-1572.6008,266.72986)"
+           id="g4028-4-3">
+          <rect
+             y="259.20322"
+             x="1063.8065"
+             height="219.51587"
+             width="406.85141"
+             id="rect3252-7-7"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-13"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-306.26703"
+           y="580.47089"
+           id="text3033"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3035"
+             x="-306.26703"
+             y="580.47089">Hash</tspan><tspan
+             sodipodi:role="line"
+             x="-306.26703"
+             y="630.47089"
+             id="tspan3037">1-1</tspan></text>
+        <text
+           xml:space="preserve"
+           style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-375.5014"
+           y="702.64142"
+           id="text3071"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3073"
+             x="-375.5014"
+             y="702.64142">hash(L4)</tspan></text>
+      </g>
+    </g>
+    <g
+       id="g4600"
+       transform="translate(1934.1694,-15.757757)">
+      <g
+         transform="translate(22.986007,-131.01994)"
+         id="g4343">
+        <g
+           transform="translate(-2926.8182,579.96422)"
+           id="g4028-4-28-0">
+          <rect
+             y="355.49469"
+             x="1063.557"
+             height="123.47396"
+             width="407.35052"
+             id="rect3252-7-96-6"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.50089717;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-12-6"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1683.5605"
+           y="1011.7759"
+           id="text2991"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan2993"
+             x="-1683.5605"
+             y="1011.7759">L1</tspan></text>
+      </g>
+      <g
+         transform="translate(1.1323299e-4,-131.01994)"
+         id="g4336">
+        <g
+           transform="translate(-2439.5159,579.96422)"
+           id="g4028-4-28-5">
+          <rect
+             y="355.49469"
+             x="1063.557"
+             height="123.47396"
+             width="407.35052"
+             id="rect3252-7-96-1"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.50089717;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-12-66"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-1196.1021"
+           y="1012.0396"
+           id="text2995"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan2997"
+             x="-1196.1021"
+             y="1012.0396">L2</tspan></text>
+      </g>
+      <g
+         transform="translate(-22.985842,-131.01994)"
+         id="g4329">
+        <g
+           transform="translate(-1952.2136,579.96422)"
+           id="g4028-4-28-9">
+          <rect
+             y="355.49469"
+             x="1063.557"
+             height="123.47396"
+             width="407.35052"
+             id="rect3252-7-96-8"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.50089717;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-12-0"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-709.20007"
+           y="1011.7564"
+           id="text2999"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3001"
+             x="-709.20007"
+             y="1011.7564">L3</tspan></text>
+      </g>
+      <g
+         transform="translate(-45.971696,-131.01994)"
+         id="g4322">
+        <g
+           transform="translate(-1464.9114,579.96422)"
+           id="g4028-4-28-2">
+          <rect
+             y="355.49469"
+             x="1063.557"
+             height="123.47396"
+             width="407.35052"
+             id="rect3252-7-96-7"
+             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.50089717;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+          <rect
+             y="382.17807"
+             x="1085.9418"
+             height="75.853653"
+             width="358.5809"
+             id="rect3176-11-12-1"
+             style="fill:#ffeeaa;stroke:none" />
+        </g>
+        <text
+           xml:space="preserve"
+           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+           x="-222.3764"
+           y="1011.7759"
+           id="text3003"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan3005"
+             x="-222.3764"
+             y="1011.7759">L4</tspan></text>
+      </g>
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 1690.5185,788.68121 -10e-5,-125.97648"
+       id="path4724"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 1226.2022,791.68121 -2e-4,-125.97648"
+       id="path4724-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 761.88601,785.93076 -2e-4,-125.97648"
+       id="path4724-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 297.56951,791.68121 -10e-5,-125.97648"
+       id="path4724-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 297.56951,443.18886 430.58941,316.96288"
+       id="path4724-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 1226.2021,443.18886 1359.222,316.96288"
+       id="path4724-0-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 759.88581,440.18886 626.86591,313.96288"
+       id="path4724-0-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 1688.5183,440.18886 1555.4984,313.96288"
+       id="path4724-0-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="m 619.72761,94.447016 223.161,-121.628783"
+       id="path4724-0-63"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
+       d="M 1368.3603,94.447016 1145.1993,-27.181767"
+       id="path4724-0-63-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>

Some files were not shown because too many files changed in this diff