Skip to content

Instantly share code, notes, and snippets.

@Willburn
Created May 23, 2020 19:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Willburn/2a635477e6579423cbf47fa430dd2e05 to your computer and use it in GitHub Desktop.
Save Willburn/2a635477e6579423cbf47fa430dd2e05 to your computer and use it in GitHub Desktop.
createstaking script
cat << "EOF"
``.'",,:>*r!~'`
`',,,,,,,:::::^/^!!~`
`.'"",,'',:~!^::!:=;;>ii!'
`.',''.`````:....';,,~::=vvl^`
.',,'....'',::,,::::::::>;ri|\\:`
`.,,,''` ',.```````,.'',,~^^:!^>iJ?`
`'''.````',. `.':,,,"~:!ii7l7v7Jr`
',,,':::~,.....!::,,,,',,!":::::|7!:;>`
',,,'.:'.`` :,.```.',:v;!:!^r?xv|il;
`,":,,,,''',',,":::,::*\**^^!!:!*>!:!::rl`
,:::"~,,,,,,::.`````..,r,,,,"~~:!\!;r?/l{:
`,,,:,,::;::!^^*\~.,:"~~:::::::!:::!!il7\:>\
` '` ,"",:!:,:!r:~:;,:c:';,,,,,"~~~~!!::::|llz^>s.
a! .@L `~::!>?zi:~!^::;!!^t::~~::::::::!*;rr?ll/7cvz'
"@K .@L '"~:;r\u6{,:|;::!!!l|"""""::~~~::::::!7/:;)lC'
UB@, '6Rd@/ ~OHg^ :::!^*{wdgr;L>~:!^^^zr^rr;;?r>>rrr>>>?z7|/7sv`
.@rUe OD`.@L `:d# ~":!^>ue$Bu">*:!!!!!v::)!::::!^>?)L!:!^>|iv}?
}Q:c@, Qu .@L /By8Q `'!>^>?|/yw6WE\7l*|\//cxr=7|?\LlzsJzzc|Ll7vvlvz/r!,`
,@wFFQA wB,"@L RH.eQ ``.'''..',,,,,:!!;!:"""":!rrr^rr^!~:!^rrr^:'``
rk` >X.`vp6u! ,ad4C `.```````.'.......``````````
:!' `::``,:^^!' '^!!:~.`:!!!:!.:!. `!; `~^rr!' `:!>*;, `,:r=^:`,!,
^lL:`//`!\^,://,,l=,!||`,"*\:,`ri,`,i\ .?L,,\L'^\;'"\/,:\^',\i~:l~
rc>L*)i.cl' `rl:~l|:r|! /L. >/|^/)l .ci;!l\'ll'``>l:>)"``^l::l!
rl,'|l)`=l?^rL/.~|="||. LL. >i,`'il .)L",'` ^|=r>L*`~c\*>L)':l>"~:
~!. `!!``,:!!:` ';" ,!" ;^` :!. `!! `:: ':::,` ':::~` ':::::
______________ __ __ ______ __ __ ________ __
/ ___/_ __/ | / //_// ____/ / //_// ____/\ \/ /
\__ \ / / / /| | / ,< / __/ / ,< / __/ \ /
___/ // / / ___ |/ /| |/ /___ / /| |/ /___ / /
/________________/_____________ /___|___________/_____
/ ____/ ____/ | / / ____/ __ \/ |/_ __/ __ \/ __ \
/ / __/ __/ / |/ / __/ / /_/ / /| | / / / / / / /_/ /
/ /_/ / /___/ /| / /___/ _, _/ ___ |/ / / /_/ / _, _/
\____/_____/_/ |_/_____/_/ |_/_/ |_/_/ \____/_/ |_|
EOF
# ASCII ART http://patorjk.com/software/taag/#p=display&f=Slant&t=STAKE%20KEY%0AGENERATOR
# ASCII IMAGE https://cloudapps.herokuapp.com/imagetoascii/
source ~/.profile
addr_dir=$CNODEDIRADDR
if [ -z "$CNODEDIRADDR" ]; then
echo CNODEDIRADDR env variable set to $CNODEDIRADDR
echo what is your address/skey/vkey default directory
read addr_dir
fi
networkmagic=$CNODENETWORKMAGIC
if [ -z "$CNODENETWORKMAGIC" ]; then
echo CNODENETWORKMAGIC env variable was set to $CNODENETWORKMAGIC
echo what is your network magic number?
read networkmagic
fi
cnodesocket=$CARDANO_NODE_SOCKET_PATH
if [ -z "$CARDANO_NODE_SOCKET_PATH" ]; then
echo CARDANO_NODE_SOCKET_PATH env variable set to $CARDANO_NODE_SOCKET_PATH
echo what is the directory and filename of the cnode socket you want to use
read cnodesocket
fi
cnodeconfiguration=$CNODECONFIG
if [ -z "$CNODECONFIG" ]; then
echo CNODECONFIG env variable set to $CNODECONFIG
echo what is the directory and filename of the cnode config file you want to use
read cnodeconfiguration
fi
staking_dir=$CNODESTAKINGDIR
if [ -z "$CNODESTAKINGDIR" ]; then
echo CNODESTAKINGDIR env variable set to $CNODESTAKINGDIR
echo what is the directory absolute path for cnode staking directory you want to use
read staking_dir
fi
## STEP1: CREATE NEW PAYMENT ADDRESS KEY PAIR
echo what do you want to name your new payment address?
read pay_addr
cardano-cli shelley address key-gen \
--verification-key-file $staking_dir$pay_addr.vkey \
--signing-key-file $staking_dir$pay_addr.skey
## STEP2: CREATE STAKING ADDRESS KEY PAIR
echo creating new staking keys
echo what name do you want for staking vkey?
read vkey_name
echo what name do you want for staking skey?
read skey_name
cardano-cli shelley stake-address key-gen \
--verification-key-file $staking_dir$vkey_name.vkey \
--signing-key-file $staking_dir$skey_name.skey
## STEP3: BUILD STAKE ADDRESS WITH ADDRESS VERIFICATION KEY FROM STEP 2
echo what name do you want for staking new address and add .addr ?
read stake_name
cardano-cli shelley stake-address build \
--staking-verification-key-file $staking_dir$vkey_name.vkey \
> $staking_dir$stake_name
## STEP4: BUILD A PAYMENT ADDRESS THAT DELEGATES TO STAKING
echo what name do you want for your new payment address and add .addr ?
read payment_name
cardano-cli shelley address build \
--payment-verification-key-file $staking_dir$pay_addr.vkey \
--staking-verification-key-file $staking_dir$vkey_name.vkey \
> $staking_dir$payment_name
recieving_addr="$(cat $staking_dir$payment_name)"
echo your address is $recieving_addr
## STEP5: TRANSFER SOME FOUNDS TO YOUR NEW ADDRESS
echo now we need to transfer some founds to this address
echo lets calculate the necassary fees, first lets find protocol parameters
echo and put them in the protocol.json
cardano-cli shelley query protocol-parameters \
--testnet-magic $networkmagic > protocol.json
echo how many slots do you want the transaction to have time to live before going invalid
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile
currentslot=$(awk 'NR==5 {print $2}' gettipfile)
echo keep in mind the current slot is $currentslot and the slot number should be higher than this
read ttl
echo what signig key will you use for transaction?
echo $(find $addr_dir*.skey)
echo name of input addr .skey file
read input_addr_skey
echo now lets calculate the minimum fees for one input, two outputs the ada and the change back
echo
cardano-cli shelley transaction calculate-min-fee \
--tx-in-count 1 \
--tx-out-count 2 \
--ttl $ttl \
--testnet-magic $networkmagic \
--signing-key-file $addr_dir$input_addr_skey \
--protocol-params-file protocol.json > minfeefile
min_fee=$(awk 'NR==1 {print $2}' minfeefile)
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile)
echo minimum fee $min_fee lovelace or $min_fee_ada ADA
echo what address will you use for sending ADA?
echo $(find $addr_dir*.addr)
read send_addr
send_actual_addr=$(cat $addr_dir$send_addr)
echo lets look at the TxHash of address and select one
cardano-cli shelley query utxo \
--address $(cat $addr_dir$send_addr) \
--testnet-magic $networkmagic > txhashfile
awk '{print NR, $1, $2, $3,"\n"}' txhashfile
echo select line number for account you want to use
read txhashnumber
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile)
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile)
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile)
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile)
echo you will use $txhash TxHash and TxIx $txix
echo account has $addr_lovelace number of lovelace or $addr_ada ADA
echo how much ada do you want to send, warning NOT in lovelace
read ada_to_send
let "lovelace_to_send=$ada_to_send * 1000000"
echo ok you are sending $lovelace_to_send lovelace or $ada_to_send ADA
let lovelace_left=addr_lovelace-min_fee-lovelace_to_send
let ada_left=lovelace_left/1000000
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA
echo this is after sending $lovelace_to_send lovelace or $ada_to_send ADA
echo you are sending to address $recieving_addr from $send_actual_addr please confirm by hitting enter or abort with ctrl c
read hitenter
sleep 1
echo we are building the transaction now
cardano-cli shelley transaction build-raw \
--tx-in $txhash#$txix \
--tx-out $recieving_addr+$lovelace_to_send \
--tx-out $send_actual_addr+$lovelace_left \
--ttl $ttl \
--fee $min_fee \
--tx-body-file tx001.raw
sleep 1
echo we are now signing the transaction
cardano-cli shelley transaction sign \
--tx-body-file tx001.raw \
--signing-key-file $addr_dir$input_addr_skey \
--testnet-magic $networkmagic \
--tx-file tx001.signed
sleep 1
echo we are now submitting the transaction
cardano-cli shelley transaction submit \
--tx-file tx001.signed \
--testnet-magic $networkmagic
echo lets sleep for 30 seconds to wait for transaction to be done
sleep 30
## STEP 6: CREATE STAKING CERTIFICATE
echo what name do you want for the certificate to register our stake key, add .cert
read cert_address
cardano-cli shelley stake-address registration-certificate \
--staking-verification-key-file staking/$vkey_name.vkey \
--out-file $staking_dir$cert_address
## STEP 7: CALCULATE FEES FOR REGISTRING CERTIFICATE
echo now lets calculate the minimum fees for registering the certificate
echo
cardano-cli shelley query protocol-parameters \
--testnet-magic $networkmagic > protocol.json
echo $(cat protocol.json)
echo please tell me the key deposit cost in lovelace?
read keydeposit
let keydeposit_ada=keydeposit/1000000
echo $keydeposit lovelaces in key deposit fee or $keydeposit_ada ADA
echo how many slots do you want the transaction to have time to live before going invalid
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile
currentslot=$(awk 'NR==5 {print $2}' gettipfile)
echo keep in mind the current slot is $currentslot and the slot number should be higher
read ttl
cardano-cli shelley transaction calculate-min-fee \
--tx-in-count 1 \
--tx-out-count 1 \
--ttl $ttl \
--testnet-magic $networkmagic \
--signing-key-file $staking_dir$pay_addr.skey \
--signing-key-file $staking_dir$skey_name.skey \
--certificate $staking_dir$cert_address \
--protocol-params-file protocol.json > minfeefile
min_fee=$(awk 'NR==1 {print $2}' minfeefile)
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile)
echo minimum fee $min_fee lovelace or $min_fee_ada ADA
## STEP 8: PAY FOR REGISTRING THE CERTIFICATE
echo we will now pay for registering the certificate of minimum fee $min_fee_ada ADA and $keydeposit_ada ADA for keydeposit
echo lets look at the TxHash of address and select one
cardano-cli shelley query utxo \
--address $recieving_addr \
--testnet-magic $networkmagic > txhashfile
awk '{print NR, $1, $2, $3,"\n"}' txhashfile
echo select line number for account you want to use
read txhashnumber
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile)
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile)
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile)
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile)
echo you will use $txhash TxHash and TxIx $txix
echo account has $addr_lovelace number of lovelace or $addr_ada ADA
let fee_total=min_fee+keydeposit
let lovelace_left=addr_lovelace-fee_total
let ada_left=$lovelace_left/1000000
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA
sleep 1
echo we are building the transaction now
cardano-cli shelley transaction build-raw \
--tx-in $txhash#$txix \
--tx-out $recieving_addr+$lovelace_left \
--ttl $ttl \
--fee $min_fee \
--tx-body-file tx001.raw \
--certificate $staking_dir$cert_address
sleep 1
echo we are now signing the transaction
cardano-cli shelley transaction sign \
--tx-body-file tx001.raw \
--signing-key-file $staking_dir$pay_addr.skey \
--signing-key-file $staking_dir$skey_name.skey \
--testnet-magic $networkmagic \
--tx-file tx001.signed
sleep 1
echo we are now submitting the transaction
cardano-cli shelley transaction submit \
--tx-file tx001.signed \
--testnet-magic $networkmagic
echo ok now we sleep for 30 seconds waiting for transaction
sleep 30
echo you want to delegate to another address - answer yes - if not script is done
read query
if [[ "$query" == "yes" ]]; then
echo now lets create a delegation certificate for this staking address ctrlc out of script if not delegating
echo what staking vkey are you going to use and write ending .vkey?
echo $(find $staking_dir*.vkey)
read staking_vkey
echo what pool verification file are you using?
read pool_vkey
echo what do you want to name the delegation certificate?
read delegation_cert
cardano-cli shelley stake-address delegation-certificate \
--staking-verification-key-file $staking_dir$staking_vkey \
--stake-pool-verification-key-file $staking_dir$pool_vkey \
--out-file $staking_dir$delegation_cert
## STEP 9: CALCULATE FEES FOR REGISTRING DELEGATION CERTIFICATE
echo now lets calculate the minimum fees for registering the certificate
echo
cardano-cli shelley query protocol-parameters \
--testnet-magic $networkmagic > protocol.json
echo how many slots do you want the transaction to have time to live before going invalid
cardano-cli get-tip --testnet-magic $networkmagic > gettipfile
currentslot=$(awk 'NR==5 {print $2}' gettipfile)
echo keep in mind the current slot is $currentslot and the slot number should be higher
read ttl
cardano-cli shelley transaction calculate-min-fee \
--tx-in-count 1 \
--tx-out-count 1 \
--ttl $ttl \
--testnet-magic $networkmagic \
--signing-key-file $staking_dir$pay_addr.skey \
--signing-key-file $staking_dir$skey_name.skey \
--certificate $staking_dir$delegation_cert \
--protocol-params-file protocol.json > minfeefile
min_fee=$(awk 'NR==1 {print $2}' minfeefile)
min_fee_ada=$(awk 'NR==1 {print $2/1000000}' minfeefile)
echo minimum fee $min_fee lovelace or $min_fee_ada ADA
## STEP 10: PAY FOR REGISTRING THE DELEGATION CERTIFICATE
echo we will now pay for registering the delegation certificate of minimum fee $minfee_ada ADA and $keydeposit_ada ADAfor keydeposit
echo lets look at the TxHash of address and select one
cardano-cli shelley query utxo \
--address $recieving_addr \
--testnet-magic $networkmagic > txhashfile
awk '{print NR, $1, $2, $3,"\n"}' txhashfile
echo select line number for account you want to use
read txhashnumber
txhash=$(awk 'NR=="'"$txhashnumber"'" {print $1}' txhashfile)
txix=$(awk 'NR=="'"$txhashnumber"'" {print $2}' txhashfile)
addr_lovelace=$(awk 'NR=="'"$txhashnumber"'" {print $3}' txhashfile)
addr_ada=$(awk 'NR=="'"$txhashnumber"'" {print $3/1000000}' txhashfile)
echo you will use $txhash TxHash and TxIx $txix
echo account has $addr_lovelace number of lovelace or $addr_ada ADA
let fee_total=min_fee
let lovelace_left=addr_lovelace-fee_total
let ada_left=lovelace_left/1000000
echo the lovelace that will be left in the account is $lovelace_left or $ada_left ADA
sleep 1
echo we are building the transaction now
cardano-cli shelley transaction build-raw \
--tx-in $txhash#$txix \
--tx-out $recieving_addr+$lovelace_left \
--ttl $ttl \
--fee $min_fee \
--tx-body-file tx001.raw \
--certificate $staking_dir$delegation_cert
sleep 1
echo we are now signing the transaction
cardano-cli shelley transaction sign \
--tx-body-file tx001.raw \
--signing-key-file $staking_dir$pay_addr.skey \
--signing-key-file $staking_dir$skey_name.skey \
--testnet-magic $networkmagic \
--tx-file tx001.signed
sleep 1
echo we are now submitting the transaction
cardano-cli shelley transaction submit \
--tx-file tx001.signed \
--testnet-magic $networkmagic
fi
echo Thank you for using this script
sleep 1
cat << "EOF"
''''''''''''''''''''''''''''''''''...'''...............':!;>*|||||?r:,...................................................................................
'''''''''''''''''''''.'''''.''''''...''..''.'.........'>zvz7)LLL7vvtuuz?:'...............................................................................
''''''''''''''''''''''''''''''''.........'..''.........,!*vv7cL)77cL\L7zuCc?!,...........................................................................
'''''''''''''''''''''''.'''.'''..'........'...............'~>lv)c)iL\||\LczCyos>,........................................................................
''''''''''''''''''''''''...'.'''''..........................'*vc)LL/\|**?\)JjaXAXv*^!:~",,,,,''..........................................................
''''''''''''''''''''''''''''''''''.....'.................'...:z777cL//LvCo4wXkkEXww4aaaaooaooojFzv)/|>;:,'...............................................
'''''''''''''''''''''''''''.''''''''.......'................';szsJ}FoewwwwXXww44eaaoSjjuujjjyoooaaa4wwXXeotL?!~''........................................
'''''''''''''''''''''''''''''''''''''.''..'''.''...'.......,>zjoewXXw4aaaaoooyjuC{s7)icllcl77vzsst}CujoaewwkAAXaF/;~'....................................
''''''''''''''''''''''''''''''''''''''''.'''''''....'....~|j444a4wXw4aojF{z7L/L/LiL/Li)iic)c)LiLiiLi)cc7vtCuja4XkUU6wu\!,'...............................
''''''''''''''''''''''''''''''''''''''''.'''''........':\oaaaaaaaoyuJv)iiLLLL/\\\///LLLLL/LL/////LLLLLL/Lic7vtFjSawXUpK$4J*:''...........................
''''''''''''''''''''''''''''''''''''''''''''''''''''':\jooaooyFCsz7v77777)L/|*>*?|||||||||||||||||||||\\\/LLLi7ztFjoa4X6pKpwj/!,,........................
'''''''''''''''''''''''''''''''''''''''''''''.''..':LuoaoSuFtzv77vvvcLL\|?>r^!!!:!;r^!!::!!!;;!!;;;;^^rr>>>>>**|\LlsujyoawkpKp4{z^:'.....................
'''''''''''''''''''''''''''''''''''''''''''''.''':\joSjuu{zvv7c7)/\|||?>r;;;!:~,,:::` '````,,~:~~:::::!!!!!!!!!;;;^r|7CFFjoawApK6o{r"....................
'''''''''''''''''''''''''''''''''''''''''''''',;7jjuuFtz7lccL\||??**??**rr^;;!:::::",,,"~~:::::::!!!!;;;;!!!!!;;;;!!^|)i7JuSaewXAUXoz>:'.................
'''''''''''''''''''''''''''''''''''''''''''',>tjuusvz7)iL/\\|?*****???*>r;!!::::::::::::::!!!!!!!;^^^r^r^^;!!;^>>*>>**|*|LzFjoe44wwww4u/,.............`..
'''''..''''''''''''''''''''''''''''''''''',*tFCF}z7LL/\|||?*|||||/\|>rr^^^^;;^^^^^^^r^^^^^rr>>*****r^;;^^r^!;^rr>>*||*>r>|L7JFjoew4aawAAu\,..............
''''''''''''..'''''''''''''''''''''''''':/{cCtz7i///\????||Llsts7L|>rr>>***|||?||\\\/|/\\||//Lici/\?>^;;^rrr>?|?>>**>rrr>>>|/lsFSaeeww4w$Ao>,............
'''''''''''''''''''''''''''''''''''''':\}}Jlz7L//\\|??|\/7tFu}vL|>^^^>|\/LiLci)i)lll7cvvll)L|\\cv\*>*?rr^rr>>r>>rrrr^r>>>>>>>>|L7suawwaeewU$j!'..........
'''''''''''''''''''''''''''''''''''',|{tsJzli/\\||?|\/7tFFz)/|*>r^;r|L77vlL|||\/Llvv7v7Ll77cLc7}us/|r**r!;^^^;^rr>>*|\LL/\\\\*;!;?LvuawwwaoEKA?'.........
'''''''''''''''''''''''''''''''''''^z{zvvlL/\|***?\L7c)L|?^!;rr>*|>?|||*****|\l7zz77zszzJFuuyu}JzzzvL|>;r!~:>|/////7{FC{}{}tzcLzEkXoztja44aowOU7,........
''''''''''''''''''''''''''.'''''',LJzzv7L\|?>r>?\L7v)>!:::~:!;;!!^???*>r>?|||\uoaXkEXwaaoyuFCJz7777vvv)\|*\Lv}tta4jyjuFuFv77LLlzueoujouFyoooyepqC,.......
'''''''''''''''''''''''''''''''':Lzvz7)\|?>r>|L77cl/?!:~~"::::!^>|L)l7vvvtuSoSojuSSuuSoooSuF}zv777vstFuCJztj4Ab8NN%UweeEs77)L\|**>|Lvua4aooaoS4qOu,......
'''''''''''''''''''''''''''''''!vv7v7i|*>r**?/LLLlL?!:,,,"::;>/sj4kU$qpKbbbbHDdKKbddpwoSjuuu}sszzs}Fj4$b%WNBQBBBNDHKppq47s7i))/|*?>*\vuyaaew4aakOD{'.....
''''''''''''''''''''''''''''',|zv)vcL|>>?||\/))/LL|::,~:!>LJjaXpbdHDDDdpXXXajC7L||>^;!!!::!!!!!!!!^uN@@QQQQQQQQQQB#NRDDKAk4juuJ7iL|*|iFojSoaaa4XpDH!.....
''''''''''''''''''''''''''''!7zc77)\?||/L\?|L7)ivC\|/)zj4AqKOdbbKXjv*!,'''''''''''''''''''''':^|tUQQQQQQQQQQQ##BBQQQQd>:!r?iuwj77{}zvvv7CuCuowqKKDNs'..'.
''''''''''''''''''''''''''';zzi7vl|||LL|?\Li7}aUdASSo4wwaj}s7\r!:'''''''''''''''''''''''',a%NBQQQQQQQQQQ#QB####gWBQA?'''''''':>|Lz7LL)ii/L77cvyAdNQF''''.
''''''''''''''''''''''''''rzvcl7l\||\\|?Lvzv}4DgRbKv*!:~''''''''''''''''''''''''''''''''''!FKBQQQQQQQBBBNRRNN#BBOF!''''''''''''''~;>|L\||||\L/LFXK%F'''''
'''''''''''''''''''''''''>z7i)cl/||\\|\)J}}op8RddF;,'''''''''''''''''''''''''''''''''''''''''~rLFa6DNBQBWHKXSv|:''''''''''''''''''''',!^?/L|?\LLvowXv,'''
''''''''''''''''''''''''^J7cc7L\\|\/\iv{uaEd88Ku^,'''''''''''''''''''''''''''''''''''''''''''''''''',:::,''''''''''''''''''''''''''''''''':;*LLL\|i}au~''
'''''''''''''''''''''''!zv)L)7)LiLv)7JjeAdRKo\:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',;\c|;*uD/''
''..''''''''''''''''''!zz)c77)LLLvc7toEqEoJ*,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''':>>\}4!''
''''''''''''''''''''',\zcicv7LL/)lcCowXS?:,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''":"'''
'''''''''''''''''''':vC7lc7iLLL\)vuauus!,''''''',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''',\u{vv7)LLL/z}C)L{/~''''''''',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''!Fjtvz7LLiLvu}z7}!,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''',',\yutssci)iz{zc7\~','''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''',''',,'':CyutCsc/\vuzl{c,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
',,,'',,'',,'''','!ujuF}z7)lzJvF/~,,,,,,',,''',,,,',,''',''''''''''',',,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
,,,,,,,,,,,''''''';uujutvzlc7Jy|,,,,,,,,,,,,,,,,,,,,'',,,'',,,'',,,',',,,',,'',''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
,,,,,,,',',,,''',,>jjyuvvzvsto|,,,,~,,,,,,,,,,,,,',,,',,,,,,,''',,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
,,,,,,,,,,''''',,'^uuj}vzizsa>,,,,,,',,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,',,,,,,,,'',',,'''''''''''''''''''''''''''''''''''''''''''''''''''''''
,,,,'',,',',''''''!uuSa4usvo\,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,''',,,,'',,''''''''''''''''''''''''''''''''''''''''''
,,,,,,',',',',,,,'!aeUDdaJjL,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,',',''''''''',,''''''''''''''''''''''''''
,,,,,',,,,,,,'':|od#QQQgyaL,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,',,,,,,,,,,,',,'''',,'',,,,''''',''',,,,,
,,,,,,,,,',:>FKQQQQ@@@@pU#a!,','',',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',',,',,,,,,
,,,,,,,,">FRQ@@@@@@@@@QNQQWj*',,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,
,,,,,,:|AQ@@@@@@@@@@@@QQQ#RDXL:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,:LHQ@@@@@@@@@@@@@@@@@@QQD8F",,,,,,,,,,,,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,~/W@@@@@@@@@@@@@@@@@@QQQQQQ#Hy:",,',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,~jQ@@@@@@@@@@@@@@@@@@@QQQQ@QQQ#i,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
:4@@Q#dA4SSokdQ@@QQQQ@#H#QQ@QQQ#K:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
o@d)!~~~~~"",',!>:|awE4ARQ#QQQBQQ|,,,,,,,,,,,,,,,,,,,,"",,,,,,,,,,,",,,,,""""",,,,,,,,,,,,,"",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#w/\\||||r!:!!::!;::,,',~>jRBBQQQj^^?>*???*?|??***?***>>>>**?***>****>>>>>>>>>>>>rrrrrrr^^^^;r^r^^^r^^;^^^;;;;^;;;;;;;;^;;;;!;;;!!!!!!!!!!!!!!!!!!!!!!!!!
CzJ}{|sLL/?*>r;!^!r>:~':::!:7H@@QXLlzzv7lzJ{uuuFtJJzzzttJszzzvzzzszv7z7vzzvvvv7777v7l)LLL///Li)L//\\|||/L)i\||\|\|\\||//|||\\\\\|?*??||?****>>>r>rrrrrr>r
jjuut7s|\{L/|)?:>\*:!:!!*>:~*LN@Qw}F{{7czCvCFuuyyuFF}FFFuC{}{tzz}{tJ{FFszvci7zzzzssszJzssvcL7zv)LLLL/LLll7iicl7li/LL//\\|\||||||||?|||\|||>^rr>>rrrrrr>*^
EOF
echo goodbye and thanks for the fish!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment