ERC-721
NFT
Overview
Max Total Supply
5,005 CC
Holders
2,160
Market
Volume (24H)
0.001 ETH
Min Price (24H)
$3.05 @ 0.001000 ETH
Max Price (24H)
$3.05 @ 0.001000 ETH
Other Info
Token Contract
Balance
1 CCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChillinChameleons
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Multiple files format)
/** MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0kdlcccokNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOo;. :xKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXkc. :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOl. .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXx,. ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKo' .oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKo. '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXd. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNk, .dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO; .kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKc. ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXo. ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNk, :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0:. :XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0: :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. ;0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: 'kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. .cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0; ..'',;;::::;;,,'....cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx. ..,;::cclllooddxkkO00KNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. ..';cox0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0; .,cdOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' .;lkKWMMMMMMMMMMWNX0Okxddddddxk0KNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. .;oONMMWKkoc;'.. ..;cd0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. .'lOKd. .'ckNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: 'loc. 'dKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0; .;lc' .dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO' .';:loddxxxxxddolc:,.. 'cc, ;0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. ..;lxO0XNWMMMMMMMMMMMMMMMWXKko:' .cl;...',;:::::;,'.. 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. .'cxO0Odl:;,,,:lkXWMMMMMMMMMMMMMMMWNOo,. .lk0XNWWMMMMWWWNXKOxl:'. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. .;o0XKx:. .oXMMMMMMMMMMMMMMMMMMNOc. 'xNMMMMMMMMMMMMMMMMWN0d:..,kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. ,o0WW0l. cNMMMMMMMMMMMMMMMMMMMW0c. :0WMMMMMMMMMMMMWKxc;,'.. 'l0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .cONMWKc. .kMMMMMMMMMMMMMMMMMMMMMWk, .dNMMMMMMMMMMNd. .;xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .l0WMMNd. .xMMMMMMMMMMMMMMMMMMMMMMMK: :KMMMMMMMMWo. 'dXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .c0WMMMXc .OMMMMMMMMMMMMMMMMMMMMMMMMK; ,OWMMMMMMK, 'xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. ,OWMMMMX: :XMMMMMMMMMMMMMMMMMMMMMMMMMO' .kWMMMMMX; ;OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl. .'. .lXMMMMMWo. ,0MMMMMMMMMMMMMMMMMMMMMMMMMMNl .xWMMMMWo .dNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMKc .:c. .xNMMMMMMK, ,OWMMMMMMMMMMMMMMMMMMMMMMMMMMMk. .kWMMMM0, .,cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXx' ;xl. .kWMMMMMMM0' .cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' .OWMMMWO' .l::0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOo' .oO: .kWMMMMMMMM0' ;kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, ,KMMMMWO, o0:;0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXXK0Okxdoc;. ,OO; .dWMMMMMMMMMNl .;kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' cNMMMMMXo. .dWK;:KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWOl;'.... :KO, :XMMMMMMMMMMMXo. .,o0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .xWMMMMMWKl. ;KMMO,lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. cX0, .kMMMMMMMMMMMMMWKxc,....,:okKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNc ;KMMMMMMMWXx:. .:0MMMWo,kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl cXX: ;XMMMMMMMMMMMMMMMMMWNXXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .xWMMMMMMMMMWXkoc:;,;coONMMMMM0;lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWl :KWo lNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO' :XMMMMMMMMMMMMMMMWWWMMMMMMMMMNl;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .OMO. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, .OMMMMMMMMMMMMMMMMMMMMMMMMMMMWd,OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; lWNc ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0, .dMMMMMMMMMMMMMMMMMMMMMMMMMMMWd,kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .OMO. .xMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO' lWMMMMMMMMMMMMMMMMMMMMMMMMMMWl,OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl cNNc cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. cNMMMMMMMMMMMMMMMMMMMMMMMMMMX;;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXc .cXXl. .xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO; lNMMMMMMMMMMMMMMMMMMMMMMMMMWx'dWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl ,kXk, 'OWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0l. oWMMMMMMMMMMMMMMMMMMMMMMMMM0;:XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNo. .oX0:. .kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0c. .dWMMMMMMMMMMMMMMMMMMMMMMMM0::0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. .xNk. .lKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXx;. .kMMMMMMMMMMMMMMMMMMMMMMMWk;cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx. .kNd. .oKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXkc. ,KMMMMMMMMMMMMMMMMMMMMMW0l:xNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO' .dNx. .ckXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWN0xc. .;kWMMMMMMMMMMMMMMMMMMWXxccxXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0; :X0, .:d0NWMMMMMMMMMMMMMMMMMMMMMMNXOdc;'. :KMMMMMMMMMMMMMMWNXOo:.,xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: .xWo ..;ldk0KXNWWWWWWNNXKOkdl:,. 'kN0ocodxxxxdol:,. 'OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXl. ,KK; . ...',,,,,,'... .dKd. 'kWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd.:XO' ,lc' cK0; 'oKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0OWO. .:kk:. ;0Xl. .';oONWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO. .cOKo. ,OXo. .';cloOWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK, ;OWK: 'ONd. .OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNc .oXMK: .kNd. cNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. .xWMNl 'ONo. ,KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX; .xWMMK, ....... '0Xc '0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk. lNMMMX: ..';:cloxkOO0KKKKKK0Okxoc,. ;KK; ;XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNl .xMMMMM0, .';coxO0XNWMMMMMMMMMMMMMMMMMMMMMWX0dc,. cXO. oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMX: .kMMMMMMXd' ..':lok0XNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNKxc'. .dNd. ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: oWMMMMMMMNOoc;,,'',,;:lodk0XNMMMMMMMMMMMMMWWNNXXXNNWWMMMMMMMMMMMMMMMMMMMMMMN0dc'. '0X:.xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: .oKWMMMMMMMMMWWWNWWWWMMMMMMMMMWWNXKOkxolc:;,'.....'',:cloxk0XNNWMMMMMMMMMMMMMMMNKkdc;'.. .....'',;;::cccclllllcc::;'.. lNKONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXc. .:dOXNWMMMMMMMMMMMWWNX0Oxdlc;,'.. ...':ldOKNWMMMMMMMMMMMMMMWWXK0OkxxxxxxxxxkOO00KKXXNNWWWMMMMMMMMMMMMMMWWNXKOdclKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd. .';:cloooollc:;,'.. .':ok0NWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWk' .';lx0XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKc ..,:ldkOKXNNWWWWWWWWWNNNXXXKKK00Okkxxdollllccclllloodx0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNx' ...'',;;;;,,,''........ .:0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKl. .:ONMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0:. .l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWO:. ,dKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWOc. .:kNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKd,. 'l0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOl' .:xXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOo,. .cxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN0d;. .,oOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWKxc' .'cxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNOo;. .,lx0NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWXOo:. .,cdOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0xc;.. .':lxOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWX0koc;.. ..,:lxOKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNKOxoc:,'.. ...';:loxOKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWNXK0OkxdooolllloooddxkO0KXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWXXNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWMMMMMMMMMMMMMMWX00KNMN0xkXMMMMMMMMMMMMMWNXXNMMMMMMMMMMMMMMNKKXWMMMMMMMMMMMMWNXNWMMMNkcllolxXMMWMMMMMMXxcllllkNMMMWKxooxKWMMMN000XWWKkkKWMMKoc:ckNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXkl:'..lKOxkKWMNxclkNXdco0WKl:lKMMMMOc:dXMMMMXdcoOWMNc. .oNO' .kMMMMMMMMMWKxl;'..dKkxkXWMXOdcoO0:...,lOWMMNklodKM0;..oNMMX: .:KXd:cOWMMM0' .cXMMKl. 'kWMWx. .:KX: lWWO' cKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWx' ;k; ;KMX; ,KO' cNk. .xMMMWo 'OMMMM0' :XMNc ;Kk. '0MMMMMMMMNd. cx' cNM0o' :o. .. .kMMK; lNd. 'OMMX: .dKXWK, lWMMM0' 'kKNWM0, . ;KMWd. .O0' .xMK, :d; oWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMk. .:ok00; ;KWK, ;Kk. oWk. .xMMMWd '0MMMMO. lNMX: .ko ;XMMMMMMMWd. 'cdkKO' cXWOl' co. cKx..dWM0' ,Oc lWMX: 'xKNMK, lWMMM0, ,kKNMX; .dKl .OMWo ok. .OMO' :KO:,xWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWd. :KWMMMK, .,,' :Xx. .xMO. .kMMMMx. '0MMMMk. oWMK, ...:; lNMMMMMMMNl lXMMMMO. .,,.. lo. lXk'.dMMx. .:' ,KMX: .oWX; oWMMM0, ..xWx. .dWMk. .kMNc ..,c. ,KMNd. .cOXWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMx. cXMMMM0' :Xl .kMk. .OMMMWo ,KMMMWo .xMMk. 'l. .xMMMMMMMMWo .oNMMMMk. lo. ... oWWo ',. .. .dWX: .;kWK, dWMMM0' ':0Wd ,KMWo '0MK, .l, . lWMNOxl' .cXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK; ,o0NMO. 'lo;. lK: '0Wd. 'OMMMNl ;KMMMNc .OMWd. ;O: '0MMMMMMMMM0' .;dKWMx. ,lo,. .oo. .;' cNX: :x. lo. :XX: ,0WWMO. .dWMMM0' :XWWMO. .xxox. lNMO. .ko .dMWx..dK: .kMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0; .;Ox. oWMk. oK, ;XWd ';c0Nc .,;lKX; ,KMNc :Xd. ,KMMMMMMMMMWk' .c0o .xMWd.. .xd cNx. ,KK, lK: .x0' .OX: .:o0MO. .;:kW0' .cdKMNo. ... ;KMMx. .OO. .kMMO' .:' ;KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXx,. :o. .dMMk. .xK; lNWk'... .xNd.... 'OK; :XM0' cNK;..lNMMMMMMMMMMWKo'. cl .kMWd.. .kk,,kWK; 'Ok. oNOccdXNc .dX: .dW0;.....lNK, .kMMNx;...'oXMMNc ,0Nl..:0MMW0l'. .lKMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNKkdokOdcoKMMNOxkXW0kxKMMWXXKK00XMWXXK000NWKkx0WMXxdkKWWXKXNMMMMMMMMMMMMMMN0xdoOOocdXMMX0OxONWNNWMWKk0Xd..;OMMMMMMM0cl0W0xxxkkXMWNXKK0OKWNOxxkkOXMMMMWXKKNMMMMWOdx0WMNKXNWMMMMWN00XWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNXXNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Art by @FullNell */ /** */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC721Enumerable.sol"; import "./Ownable.sol"; import "./Strings.sol"; /** * @title ERC-721 Smart Contract */ /** * @title Chillin Chameleons contract * @dev Extends ERC721 Non-Fungible Token Standard basic implementation */ contract ChillinChameleons is ERC721, ERC721Enumerable, Ownable { using Strings for uint256; string public PROVENANCE = ""; uint256 public constant tokenPrice = 80000000000000000; // 0.08 ETH uint public constant maxTokenPurchase = 15; uint256 public MAX_TOKENS = 10000; bool public saleIsActive = false; bool public revealed = false; uint public presaleMaxMint = 7; bool public presaleActive = false; mapping(address => bool) private presaleList; mapping(address => uint256) private presalePurchases; string baseURI; string private notRevealedUri; string public baseExtension = ".json"; constructor( string memory _initNotRevealedUri ) ERC721("Chillin Chameleons", "CC") { setNotRevealedURI(_initNotRevealedUri); } // CHANGED: needed to resolve conflicting fns in ERC721 and ERC721Enumerable function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, to, tokenId); } // CHANGED: needed to resolve conflicting fns in ERC721 and ERC721Enumerable function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC721Enumerable) returns (bool) { return super.supportsInterface(interfaceId); } function setPresaleMaxMint(uint256 _presaleMaxMint) external onlyOwner { presaleMaxMint = _presaleMaxMint; } function flipPresaleState() external onlyOwner { presaleActive = !presaleActive; } function addToPresaleList(address[] calldata addresses) external onlyOwner { for (uint256 i = 0; i < addresses.length; i++) { if (!presaleList[addresses[i]]) { presaleList[addresses[i]] = true; presalePurchases[addresses[i]] = 0; } } } function isOnPresaleList(address addr) external view returns (bool) { return presaleList[addr]; } function presaleAmountAvailable(address addr) external view returns (uint256) { if (presaleList[addr]) { return presaleMaxMint - presalePurchases[addr]; } return 0; } function mintPresale(uint256 _mintAmount) public payable { uint256 supply = totalSupply(); require(presaleActive, "Presale must be active to mint Tokens"); require(_mintAmount > 0, "_mintAmount must be at 0"); require(_mintAmount <= presaleMaxMint, "_mintAmount must be <= presaleMaxMint"); require(supply + _mintAmount <= MAX_TOKENS, "Mint must not surpass maxSupply"); require(msg.value >= tokenPrice * _mintAmount, "Not enough money"); require(presaleList[msg.sender] == true, "Not on the list"); require(presalePurchases[msg.sender] + _mintAmount <= presaleMaxMint, "No presale mints left"); presalePurchases[msg.sender] += _mintAmount; for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i); } } // CHANGED: added to account for changes in openzeppelin versions // CHANGED: added to account for changes in openzeppelin versions function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if(revealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : ""; } function setProvenance(string memory provenance) public onlyOwner { PROVENANCE = provenance; } function reveal() public onlyOwner() { revealed = true; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function reserveTokens() public onlyOwner { uint supply = totalSupply(); uint i; for (i = 0; i < 125; i++) { _safeMint(msg.sender, supply + i); } } function flipSaleState() public onlyOwner { saleIsActive = !saleIsActive; } function mint(uint numberOfTokens) public payable { uint256 supply = totalSupply(); require(saleIsActive, "Sale must be active to mint Tokens"); require(numberOfTokens <= maxTokenPurchase, "Exceeded max token purchase"); // CHANGED: mult and add to + and * require(totalSupply() + numberOfTokens <= MAX_TOKENS, "Purchase would exceed max supply of tokens"); // CHANGED: mult and add to + and * require(tokenPrice * numberOfTokens <= msg.value, "Ether value sent is not correct"); presalePurchases[msg.sender] += numberOfTokens; for (uint256 i = 1; i <= numberOfTokens; i++) { _safeMint(msg.sender, supply + i); } } function withdraw() public onlyOwner { uint balance = address(this).balance; payable(msg.sender).transfer(balance); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./IERC721Metadata.sol"; import "./Address.sol"; import "./Context.sol"; import "./Strings.sol"; import "./ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC721.sol"; import "./IERC721Enumerable.sol"; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_initNotRevealedUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROVENANCE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToPresaleList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPresaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isOnPresaleList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"presaleAmountAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleMaxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleMaxMint","type":"uint256"}],"name":"setPresaleMaxMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"provenance","type":"string"}],"name":"setProvenance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040819052600060808190526200001b91600b9162000201565b50612710600c55600d805461ffff191690556007600e55600f805460ff1916905560408051808201909152600580825264173539b7b760d91b60209092019182526200006a9160149162000201565b503480156200007857600080fd5b50604051620030e3380380620030e38339810160408190526200009b91620002a7565b60408051808201825260128152714368696c6c696e204368616d656c656f6e7360701b602080830191825283518085019094526002845261434360f01b908401528151919291620000ef9160009162000201565b5080516200010590600190602084019062000201565b505050620001226200011c6200013460201b60201c565b62000138565b6200012d816200018a565b50620003fe565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200019462000134565b6001600160a01b0316620001a7620001f2565b6001600160a01b031614620001d95760405162461bcd60e51b8152600401620001d09062000376565b60405180910390fd5b8051620001ee90601390602084019062000201565b5050565b600a546001600160a01b031690565b8280546200020f90620003ab565b90600052602060002090601f0160209004810192826200023357600085556200027e565b82601f106200024e57805160ff19168380011785556200027e565b828001600101855582156200027e579182015b828111156200027e57825182559160200191906001019062000261565b506200028c92915062000290565b5090565b5b808211156200028c576000815560010162000291565b60006020808385031215620002ba578182fd5b82516001600160401b0380821115620002d1578384fd5b818501915085601f830112620002e5578384fd5b815181811115620002fa57620002fa620003e8565b604051601f8201601f1916810185018381118282101715620003205762000320620003e8565b604052818152838201850188101562000337578586fd5b8592505b818310156200035a57838301850151818401860152918401916200033b565b818311156200036b57858583830101525b979650505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600281046001821680620003c057607f821691505b60208210811415620003e257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612cd5806200040e6000396000f3fe6080604052600436106102515760003560e01c80637ff9b59611610139578063c87b56dd116100b6578063f2c4ce1e1161007a578063f2c4ce1e1461064d578063f2fde38b1461066d578063f47c84c51461068d578063f759867a146106a2578063f81227d4146106b5578063ffe630b5146106ca57610251565b8063c87b56dd146105b8578063de00a68b146105d8578063df4305d2146105f8578063e985e9c514610618578063eb8d24441461063857610251565b8063a0712d68116100fd578063a0712d681461053b578063a22cb4651461054e578063a475b5dd1461056e578063b88d4fde14610583578063c6682862146105a357610251565b80637ff9b596146104c7578063823f9b97146104dc5780638da5cb5b146104fc578063946ef42a1461051157806395d89b411461052657610251565b80633ccfd60b116101d257806355f804b31161019657806355f804b31461041d5780636352211e1461043d5780636373a6b11461045d57806370a0823114610472578063715018a6146104925780637204a3c9146104a757610251565b80633ccfd60b1461039e57806342842e0e146103b35780634f6ccce7146103d357806351830227146103f357806353135ca01461040857610251565b806318160ddd1161021957806318160ddd1461031f57806323b872dd1461033457806327ac36c4146103545780632f745c591461036957806334918dfd1461038957610251565b806301ffc9a71461025657806306fdde031461028c578063081812fc146102ae578063095ea7b3146102db57806309aa3dcf146102fd575b600080fd5b34801561026257600080fd5b506102766102713660046121d6565b6106ea565b60405161028391906123ab565b60405180910390f35b34801561029857600080fd5b506102a16106fd565b60405161028391906123b6565b3480156102ba57600080fd5b506102ce6102c9366004612254565b61078f565b604051610283919061235a565b3480156102e757600080fd5b506102fb6102f636600461213e565b6107db565b005b34801561030957600080fd5b50610312610873565b6040516102839190612b3a565b34801561032b57600080fd5b50610312610878565b34801561034057600080fd5b506102fb61034f366004612050565b61087e565b34801561036057600080fd5b506102fb6108b6565b34801561037557600080fd5b5061031261038436600461213e565b610936565b34801561039557600080fd5b506102fb610988565b3480156103aa57600080fd5b506102fb6109db565b3480156103bf57600080fd5b506102fb6103ce366004612050565b610a49565b3480156103df57600080fd5b506103126103ee366004612254565b610a64565b3480156103ff57600080fd5b50610276610abf565b34801561041457600080fd5b50610276610acd565b34801561042957600080fd5b506102fb61043836600461220e565b610ad6565b34801561044957600080fd5b506102ce610458366004612254565b610b28565b34801561046957600080fd5b506102a1610b5d565b34801561047e57600080fd5b5061031261048d366004612004565b610beb565b34801561049e57600080fd5b506102fb610c2f565b3480156104b357600080fd5b506102fb6104c2366004612167565b610c7a565b3480156104d357600080fd5b50610312610de9565b3480156104e857600080fd5b506103126104f7366004612004565b610df5565b34801561050857600080fd5b506102ce610e4b565b34801561051d57600080fd5b50610312610e5a565b34801561053257600080fd5b506102a1610e60565b6102fb610549366004612254565b610e6f565b34801561055a57600080fd5b506102fb610569366004612104565b610f73565b34801561057a57600080fd5b506102fb611041565b34801561058f57600080fd5b506102fb61059e36600461208b565b611091565b3480156105af57600080fd5b506102a16110d0565b3480156105c457600080fd5b506102a16105d3366004612254565b6110dd565b3480156105e457600080fd5b506102766105f3366004612004565b611204565b34801561060457600080fd5b506102fb610613366004612254565b611222565b34801561062457600080fd5b5061027661063336600461201e565b611266565b34801561064457600080fd5b50610276611294565b34801561065957600080fd5b506102fb61066836600461220e565b61129d565b34801561067957600080fd5b506102fb610688366004612004565b6112ef565b34801561069957600080fd5b50610312611360565b6102fb6106b0366004612254565b611366565b3480156106c157600080fd5b506102fb6114f2565b3480156106d657600080fd5b506102fb6106e536600461220e565b611545565b60006106f582611597565b90505b919050565b60606000805461070c90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461073890612bdd565b80156107855780601f1061075a57610100808354040283529160200191610785565b820191906000526020600020905b81548152906001019060200180831161076857829003601f168201915b5050505050905090565b600061079a826115bc565b6107bf5760405162461bcd60e51b81526004016107b69061284b565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006107e682610b28565b9050806001600160a01b0316836001600160a01b0316141561081a5760405162461bcd60e51b81526004016107b69061299b565b806001600160a01b031661082c6115d9565b6001600160a01b031614806108485750610848816106336115d9565b6108645760405162461bcd60e51b81526004016107b6906126dc565b61086e83836115dd565b505050565b600f81565b60085490565b61088f6108896115d9565b8261164b565b6108ab5760405162461bcd60e51b81526004016107b690612a13565b61086e8383836116d0565b6108be6115d9565b6001600160a01b03166108cf610e4b565b6001600160a01b0316146108f55760405162461bcd60e51b81526004016107b690612897565b60006108ff610878565b905060005b607d811015610932576109203361091b8385612b4f565b6117fd565b8061092a81612c18565b915050610904565b5050565b600061094183610beb565b821061095f5760405162461bcd60e51b81526004016107b6906123f3565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6109906115d9565b6001600160a01b03166109a1610e4b565b6001600160a01b0316146109c75760405162461bcd60e51b81526004016107b690612897565b600d805460ff19811660ff90911615179055565b6109e36115d9565b6001600160a01b03166109f4610e4b565b6001600160a01b031614610a1a5760405162461bcd60e51b81526004016107b690612897565b6040514790339082156108fc029083906000818181858888f19350505050158015610932573d6000803e3d6000fd5b61086e83838360405180602001604052806000815250611091565b6000610a6e610878565b8210610a8c5760405162461bcd60e51b81526004016107b690612a64565b60088281548110610aad57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600d54610100900460ff1681565b600f5460ff1681565b610ade6115d9565b6001600160a01b0316610aef610e4b565b6001600160a01b031614610b155760405162461bcd60e51b81526004016107b690612897565b8051610932906012906020840190611ee4565b6000818152600260205260408120546001600160a01b0316806106f55760405162461bcd60e51b81526004016107b690612783565b600b8054610b6a90612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9690612bdd565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b505050505081565b60006001600160a01b038216610c135760405162461bcd60e51b81526004016107b690612739565b506001600160a01b031660009081526003602052604090205490565b610c376115d9565b6001600160a01b0316610c48610e4b565b6001600160a01b031614610c6e5760405162461bcd60e51b81526004016107b690612897565b610c786000611817565b565b610c826115d9565b6001600160a01b0316610c93610e4b565b6001600160a01b031614610cb95760405162461bcd60e51b81526004016107b690612897565b60005b8181101561086e5760106000848484818110610ce857634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cfd9190612004565b6001600160a01b0316815260208101919091526040016000205460ff16610dd757600160106000858585818110610d4457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d599190612004565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155601181858585818110610da757634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610dbc9190612004565b6001600160a01b031681526020810191909152604001600020555b80610de181612c18565b915050610cbc565b67011c37937e08000081565b6001600160a01b03811660009081526010602052604081205460ff1615610e43576001600160a01b038216600090815260116020526040902054600e54610e3c9190612b9a565b90506106f8565b506000919050565b600a546001600160a01b031690565b600e5481565b60606001805461070c90612bdd565b6000610e79610878565b600d5490915060ff16610e9e5760405162461bcd60e51b81526004016107b6906125f6565b600f821115610ebf5760405162461bcd60e51b81526004016107b6906129dc565b600c5482610ecb610878565b610ed59190612b4f565b1115610ef35760405162461bcd60e51b81526004016107b6906127cc565b34610f068367011c37937e080000612b7b565b1115610f245760405162461bcd60e51b81526004016107b6906125bf565b3360009081526011602052604081208054849290610f43908490612b4f565b90915550600190505b82811161086e57610f613361091b8385612b4f565b80610f6b81612c18565b915050610f4c565b610f7b6115d9565b6001600160a01b0316826001600160a01b03161415610fac5760405162461bcd60e51b81526004016107b690612588565b8060056000610fb96115d9565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610ffd6115d9565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161103591906123ab565b60405180910390a35050565b6110496115d9565b6001600160a01b031661105a610e4b565b6001600160a01b0316146110805760405162461bcd60e51b81526004016107b690612897565b600d805461ff001916610100179055565b6110a261109c6115d9565b8361164b565b6110be5760405162461bcd60e51b81526004016107b690612a13565b6110ca84848484611869565b50505050565b60148054610b6a90612bdd565b60606110e8826115bc565b6111045760405162461bcd60e51b81526004016107b69061294c565b600d54610100900460ff166111a5576013805461112090612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461114c90612bdd565b80156111995780601f1061116e57610100808354040283529160200191611199565b820191906000526020600020905b81548152906001019060200180831161117c57829003601f168201915b505050505090506106f8565b60006111af61189c565b905060008151116111cf57604051806020016040528060008152506111fd565b806111d9846118ab565b60146040516020016111ed93929190612298565b6040516020818303038152906040525b9392505050565b6001600160a01b031660009081526010602052604090205460ff1690565b61122a6115d9565b6001600160a01b031661123b610e4b565b6001600160a01b0316146112615760405162461bcd60e51b81526004016107b690612897565b600e55565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600d5460ff1681565b6112a56115d9565b6001600160a01b03166112b6610e4b565b6001600160a01b0316146112dc5760405162461bcd60e51b81526004016107b690612897565b8051610932906013906020840190611ee4565b6112f76115d9565b6001600160a01b0316611308610e4b565b6001600160a01b03161461132e5760405162461bcd60e51b81526004016107b690612897565b6001600160a01b0381166113545760405162461bcd60e51b81526004016107b690612490565b61135d81611817565b50565b600c5481565b6000611370610878565b600f5490915060ff166113955760405162461bcd60e51b81526004016107b690612ab0565b600082116113b55760405162461bcd60e51b81526004016107b69061250d565b600e548211156113d75760405162461bcd60e51b81526004016107b690612af5565b600c546113e48383612b4f565b11156114025760405162461bcd60e51b81526004016107b690612915565b6114148267011c37937e080000612b7b565b3410156114335760405162461bcd60e51b81526004016107b6906123c9565b3360009081526010602052604090205460ff1615156001146114675760405162461bcd60e51b81526004016107b690612638565b600e5433600090815260116020526040902054611485908490612b4f565b11156114a35760405162461bcd60e51b81526004016107b6906126ad565b33600090815260116020526040812080548492906114c2908490612b4f565b90915550600190505b82811161086e576114e03361091b8385612b4f565b806114ea81612c18565b9150506114cb565b6114fa6115d9565b6001600160a01b031661150b610e4b565b6001600160a01b0316146115315760405162461bcd60e51b81526004016107b690612897565b600f805460ff19811660ff90911615179055565b61154d6115d9565b6001600160a01b031661155e610e4b565b6001600160a01b0316146115845760405162461bcd60e51b81526004016107b690612897565b805161093290600b906020840190611ee4565b60006001600160e01b0319821663780e9d6360e01b14806106f557506106f5826119c6565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061161282610b28565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611656826115bc565b6116725760405162461bcd60e51b81526004016107b690612661565b600061167d83610b28565b9050806001600160a01b0316846001600160a01b031614806116b85750836001600160a01b03166116ad8461078f565b6001600160a01b0316145b806116c857506116c88185611266565b949350505050565b826001600160a01b03166116e382610b28565b6001600160a01b0316146117095760405162461bcd60e51b81526004016107b6906128cc565b6001600160a01b03821661172f5760405162461bcd60e51b81526004016107b690612544565b61173a838383611a06565b6117456000826115dd565b6001600160a01b038316600090815260036020526040812080546001929061176e908490612b9a565b90915550506001600160a01b038216600090815260036020526040812080546001929061179c908490612b4f565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610932828260405180602001604052806000815250611a11565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6118748484846116d0565b61188084848484611a44565b6110ca5760405162461bcd60e51b81526004016107b69061243e565b60606012805461070c90612bdd565b6060816118d057506040805180820190915260018152600360fc1b60208201526106f8565b8160005b81156118fa57806118e481612c18565b91506118f39050600a83612b67565b91506118d4565b60008167ffffffffffffffff81111561192357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561194d576020820181803683370190505b5090505b84156116c857611962600183612b9a565b915061196f600a86612c33565b61197a906030612b4f565b60f81b81838151811061199d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506119bf600a86612b67565b9450611951565b60006001600160e01b031982166380ac58cd60e01b14806119f757506001600160e01b03198216635b5e139f60e01b145b806106f557506106f582611b5f565b61086e838383611b78565b611a1b8383611c01565b611a286000848484611a44565b61086e5760405162461bcd60e51b81526004016107b69061243e565b6000611a58846001600160a01b0316611ce0565b15611b5457836001600160a01b031663150b7a02611a746115d9565b8786866040518563ffffffff1660e01b8152600401611a96949392919061236e565b602060405180830381600087803b158015611ab057600080fd5b505af1925050508015611ae0575060408051601f3d908101601f19168201909252611add918101906121f2565b60015b611b3a573d808015611b0e576040519150601f19603f3d011682016040523d82523d6000602084013e611b13565b606091505b508051611b325760405162461bcd60e51b81526004016107b69061243e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506116c8565b506001949350505050565b6001600160e01b031981166301ffc9a760e01b14919050565b611b8383838361086e565b6001600160a01b038316611b9f57611b9a81611ce6565b611bc2565b816001600160a01b0316836001600160a01b031614611bc257611bc28382611d2a565b6001600160a01b038216611bde57611bd981611dc7565b61086e565b826001600160a01b0316826001600160a01b03161461086e5761086e8282611ea0565b6001600160a01b038216611c275760405162461bcd60e51b81526004016107b690612816565b611c30816115bc565b15611c4d5760405162461bcd60e51b81526004016107b6906124d6565b611c5960008383611a06565b6001600160a01b0382166000908152600360205260408120805460019290611c82908490612b4f565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b60006001611d3784610beb565b611d419190612b9a565b600083815260076020526040902054909150808214611d94576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611dd990600190612b9a565b60008381526009602052604081205460088054939450909284908110611e0f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060088381548110611e3e57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611e8457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611eab83610beb565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054611ef090612bdd565b90600052602060002090601f016020900481019282611f125760008555611f58565b82601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611f68565b5090565b5b80821115611f645760008155600101611f69565b600067ffffffffffffffff80841115611f9857611f98612c73565b604051601f8501601f191681016020018281118282101715611fbc57611fbc612c73565b604052848152915081838501861015611fd457600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146106f857600080fd5b600060208284031215612015578081fd5b6111fd82611fed565b60008060408385031215612030578081fd5b61203983611fed565b915061204760208401611fed565b90509250929050565b600080600060608486031215612064578081fd5b61206d84611fed565b925061207b60208501611fed565b9150604084013590509250925092565b600080600080608085870312156120a0578081fd5b6120a985611fed565b93506120b760208601611fed565b925060408501359150606085013567ffffffffffffffff8111156120d9578182fd5b8501601f810187136120e9578182fd5b6120f887823560208401611f7d565b91505092959194509250565b60008060408385031215612116578182fd5b61211f83611fed565b915060208301358015158114612133578182fd5b809150509250929050565b60008060408385031215612150578182fd5b61215983611fed565b946020939093013593505050565b60008060208385031215612179578182fd5b823567ffffffffffffffff80821115612190578384fd5b818501915085601f8301126121a3578384fd5b8135818111156121b1578485fd5b86602080830285010111156121c4578485fd5b60209290920196919550909350505050565b6000602082840312156121e7578081fd5b81356111fd81612c89565b600060208284031215612203578081fd5b81516111fd81612c89565b60006020828403121561221f578081fd5b813567ffffffffffffffff811115612235578182fd5b8201601f81018413612245578182fd5b6116c884823560208401611f7d565b600060208284031215612265578081fd5b5035919050565b60008151808452612284816020860160208601612bb1565b601f01601f19169290920160200192915050565b6000845160206122ab8285838a01612bb1565b8551918401916122be8184848a01612bb1565b85549201918390600281046001808316806122da57607f831692505b8583108114156122f857634e487b7160e01b88526022600452602488fd5b80801561230c576001811461231d57612349565b60ff19851688528388019550612349565b6123268b612b43565b895b858110156123415781548a820152908401908801612328565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123a19083018461226c565b9695505050505050565b901515815260200190565b6000602082526111fd602083018461226c565b60208082526010908201526f4e6f7420656e6f756768206d6f6e657960801b604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526018908201527f5f6d696e74416d6f756e74206d75737420626520617420300000000000000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252601f908201527f45746865722076616c75652073656e74206973206e6f7420636f727265637400604082015260600190565b60208082526022908201527f53616c65206d7573742062652061637469766520746f206d696e7420546f6b656040820152616e7360f01b606082015260800190565b6020808252600f908201526e139bdd081bdb881d1a19481b1a5cdd608a1b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b602080825260159082015274139bc81c1c995cd85b19481b5a5b9d1cc81b19599d605a1b604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252602a908201527f507572636861736520776f756c6420657863656564206d617820737570706c79604082015269206f6620746f6b656e7360b01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252601f908201527f4d696e74206d757374206e6f742073757270617373206d6178537570706c7900604082015260600190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b6020808252601b908201527f4578636565646564206d617820746f6b656e2070757263686173650000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b60208082526025908201527f50726573616c65206d7573742062652061637469766520746f206d696e7420546040820152646f6b656e7360d81b606082015260800190565b60208082526025908201527f5f6d696e74416d6f756e74206d757374206265203c3d2070726573616c654d616040820152641e135a5b9d60da1b606082015260800190565b90815260200190565b60009081526020902090565b60008219821115612b6257612b62612c47565b500190565b600082612b7657612b76612c5d565b500490565b6000816000190483118215151615612b9557612b95612c47565b500290565b600082821015612bac57612bac612c47565b500390565b60005b83811015612bcc578181015183820152602001612bb4565b838111156110ca5750506000910152565b600281046001821680612bf157607f821691505b60208210811415612c1257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c2c57612c2c612c47565b5060010190565b600082612c4257612c42612c5d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461135d57600080fdfea26469706673582212206d7f4ad5fc2433e0bb83f1ce348942d87630e01e0c237f9c6586442c87fcff0e64736f6c6343000800003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d555179514569783164773458326a4a4b3367467770586f557843325a794b454a76425859706a344e455461522f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102515760003560e01c80637ff9b59611610139578063c87b56dd116100b6578063f2c4ce1e1161007a578063f2c4ce1e1461064d578063f2fde38b1461066d578063f47c84c51461068d578063f759867a146106a2578063f81227d4146106b5578063ffe630b5146106ca57610251565b8063c87b56dd146105b8578063de00a68b146105d8578063df4305d2146105f8578063e985e9c514610618578063eb8d24441461063857610251565b8063a0712d68116100fd578063a0712d681461053b578063a22cb4651461054e578063a475b5dd1461056e578063b88d4fde14610583578063c6682862146105a357610251565b80637ff9b596146104c7578063823f9b97146104dc5780638da5cb5b146104fc578063946ef42a1461051157806395d89b411461052657610251565b80633ccfd60b116101d257806355f804b31161019657806355f804b31461041d5780636352211e1461043d5780636373a6b11461045d57806370a0823114610472578063715018a6146104925780637204a3c9146104a757610251565b80633ccfd60b1461039e57806342842e0e146103b35780634f6ccce7146103d357806351830227146103f357806353135ca01461040857610251565b806318160ddd1161021957806318160ddd1461031f57806323b872dd1461033457806327ac36c4146103545780632f745c591461036957806334918dfd1461038957610251565b806301ffc9a71461025657806306fdde031461028c578063081812fc146102ae578063095ea7b3146102db57806309aa3dcf146102fd575b600080fd5b34801561026257600080fd5b506102766102713660046121d6565b6106ea565b60405161028391906123ab565b60405180910390f35b34801561029857600080fd5b506102a16106fd565b60405161028391906123b6565b3480156102ba57600080fd5b506102ce6102c9366004612254565b61078f565b604051610283919061235a565b3480156102e757600080fd5b506102fb6102f636600461213e565b6107db565b005b34801561030957600080fd5b50610312610873565b6040516102839190612b3a565b34801561032b57600080fd5b50610312610878565b34801561034057600080fd5b506102fb61034f366004612050565b61087e565b34801561036057600080fd5b506102fb6108b6565b34801561037557600080fd5b5061031261038436600461213e565b610936565b34801561039557600080fd5b506102fb610988565b3480156103aa57600080fd5b506102fb6109db565b3480156103bf57600080fd5b506102fb6103ce366004612050565b610a49565b3480156103df57600080fd5b506103126103ee366004612254565b610a64565b3480156103ff57600080fd5b50610276610abf565b34801561041457600080fd5b50610276610acd565b34801561042957600080fd5b506102fb61043836600461220e565b610ad6565b34801561044957600080fd5b506102ce610458366004612254565b610b28565b34801561046957600080fd5b506102a1610b5d565b34801561047e57600080fd5b5061031261048d366004612004565b610beb565b34801561049e57600080fd5b506102fb610c2f565b3480156104b357600080fd5b506102fb6104c2366004612167565b610c7a565b3480156104d357600080fd5b50610312610de9565b3480156104e857600080fd5b506103126104f7366004612004565b610df5565b34801561050857600080fd5b506102ce610e4b565b34801561051d57600080fd5b50610312610e5a565b34801561053257600080fd5b506102a1610e60565b6102fb610549366004612254565b610e6f565b34801561055a57600080fd5b506102fb610569366004612104565b610f73565b34801561057a57600080fd5b506102fb611041565b34801561058f57600080fd5b506102fb61059e36600461208b565b611091565b3480156105af57600080fd5b506102a16110d0565b3480156105c457600080fd5b506102a16105d3366004612254565b6110dd565b3480156105e457600080fd5b506102766105f3366004612004565b611204565b34801561060457600080fd5b506102fb610613366004612254565b611222565b34801561062457600080fd5b5061027661063336600461201e565b611266565b34801561064457600080fd5b50610276611294565b34801561065957600080fd5b506102fb61066836600461220e565b61129d565b34801561067957600080fd5b506102fb610688366004612004565b6112ef565b34801561069957600080fd5b50610312611360565b6102fb6106b0366004612254565b611366565b3480156106c157600080fd5b506102fb6114f2565b3480156106d657600080fd5b506102fb6106e536600461220e565b611545565b60006106f582611597565b90505b919050565b60606000805461070c90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461073890612bdd565b80156107855780601f1061075a57610100808354040283529160200191610785565b820191906000526020600020905b81548152906001019060200180831161076857829003601f168201915b5050505050905090565b600061079a826115bc565b6107bf5760405162461bcd60e51b81526004016107b69061284b565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006107e682610b28565b9050806001600160a01b0316836001600160a01b0316141561081a5760405162461bcd60e51b81526004016107b69061299b565b806001600160a01b031661082c6115d9565b6001600160a01b031614806108485750610848816106336115d9565b6108645760405162461bcd60e51b81526004016107b6906126dc565b61086e83836115dd565b505050565b600f81565b60085490565b61088f6108896115d9565b8261164b565b6108ab5760405162461bcd60e51b81526004016107b690612a13565b61086e8383836116d0565b6108be6115d9565b6001600160a01b03166108cf610e4b565b6001600160a01b0316146108f55760405162461bcd60e51b81526004016107b690612897565b60006108ff610878565b905060005b607d811015610932576109203361091b8385612b4f565b6117fd565b8061092a81612c18565b915050610904565b5050565b600061094183610beb565b821061095f5760405162461bcd60e51b81526004016107b6906123f3565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6109906115d9565b6001600160a01b03166109a1610e4b565b6001600160a01b0316146109c75760405162461bcd60e51b81526004016107b690612897565b600d805460ff19811660ff90911615179055565b6109e36115d9565b6001600160a01b03166109f4610e4b565b6001600160a01b031614610a1a5760405162461bcd60e51b81526004016107b690612897565b6040514790339082156108fc029083906000818181858888f19350505050158015610932573d6000803e3d6000fd5b61086e83838360405180602001604052806000815250611091565b6000610a6e610878565b8210610a8c5760405162461bcd60e51b81526004016107b690612a64565b60088281548110610aad57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600d54610100900460ff1681565b600f5460ff1681565b610ade6115d9565b6001600160a01b0316610aef610e4b565b6001600160a01b031614610b155760405162461bcd60e51b81526004016107b690612897565b8051610932906012906020840190611ee4565b6000818152600260205260408120546001600160a01b0316806106f55760405162461bcd60e51b81526004016107b690612783565b600b8054610b6a90612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9690612bdd565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b505050505081565b60006001600160a01b038216610c135760405162461bcd60e51b81526004016107b690612739565b506001600160a01b031660009081526003602052604090205490565b610c376115d9565b6001600160a01b0316610c48610e4b565b6001600160a01b031614610c6e5760405162461bcd60e51b81526004016107b690612897565b610c786000611817565b565b610c826115d9565b6001600160a01b0316610c93610e4b565b6001600160a01b031614610cb95760405162461bcd60e51b81526004016107b690612897565b60005b8181101561086e5760106000848484818110610ce857634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cfd9190612004565b6001600160a01b0316815260208101919091526040016000205460ff16610dd757600160106000858585818110610d4457634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d599190612004565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155601181858585818110610da757634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610dbc9190612004565b6001600160a01b031681526020810191909152604001600020555b80610de181612c18565b915050610cbc565b67011c37937e08000081565b6001600160a01b03811660009081526010602052604081205460ff1615610e43576001600160a01b038216600090815260116020526040902054600e54610e3c9190612b9a565b90506106f8565b506000919050565b600a546001600160a01b031690565b600e5481565b60606001805461070c90612bdd565b6000610e79610878565b600d5490915060ff16610e9e5760405162461bcd60e51b81526004016107b6906125f6565b600f821115610ebf5760405162461bcd60e51b81526004016107b6906129dc565b600c5482610ecb610878565b610ed59190612b4f565b1115610ef35760405162461bcd60e51b81526004016107b6906127cc565b34610f068367011c37937e080000612b7b565b1115610f245760405162461bcd60e51b81526004016107b6906125bf565b3360009081526011602052604081208054849290610f43908490612b4f565b90915550600190505b82811161086e57610f613361091b8385612b4f565b80610f6b81612c18565b915050610f4c565b610f7b6115d9565b6001600160a01b0316826001600160a01b03161415610fac5760405162461bcd60e51b81526004016107b690612588565b8060056000610fb96115d9565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610ffd6115d9565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161103591906123ab565b60405180910390a35050565b6110496115d9565b6001600160a01b031661105a610e4b565b6001600160a01b0316146110805760405162461bcd60e51b81526004016107b690612897565b600d805461ff001916610100179055565b6110a261109c6115d9565b8361164b565b6110be5760405162461bcd60e51b81526004016107b690612a13565b6110ca84848484611869565b50505050565b60148054610b6a90612bdd565b60606110e8826115bc565b6111045760405162461bcd60e51b81526004016107b69061294c565b600d54610100900460ff166111a5576013805461112090612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461114c90612bdd565b80156111995780601f1061116e57610100808354040283529160200191611199565b820191906000526020600020905b81548152906001019060200180831161117c57829003601f168201915b505050505090506106f8565b60006111af61189c565b905060008151116111cf57604051806020016040528060008152506111fd565b806111d9846118ab565b60146040516020016111ed93929190612298565b6040516020818303038152906040525b9392505050565b6001600160a01b031660009081526010602052604090205460ff1690565b61122a6115d9565b6001600160a01b031661123b610e4b565b6001600160a01b0316146112615760405162461bcd60e51b81526004016107b690612897565b600e55565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600d5460ff1681565b6112a56115d9565b6001600160a01b03166112b6610e4b565b6001600160a01b0316146112dc5760405162461bcd60e51b81526004016107b690612897565b8051610932906013906020840190611ee4565b6112f76115d9565b6001600160a01b0316611308610e4b565b6001600160a01b03161461132e5760405162461bcd60e51b81526004016107b690612897565b6001600160a01b0381166113545760405162461bcd60e51b81526004016107b690612490565b61135d81611817565b50565b600c5481565b6000611370610878565b600f5490915060ff166113955760405162461bcd60e51b81526004016107b690612ab0565b600082116113b55760405162461bcd60e51b81526004016107b69061250d565b600e548211156113d75760405162461bcd60e51b81526004016107b690612af5565b600c546113e48383612b4f565b11156114025760405162461bcd60e51b81526004016107b690612915565b6114148267011c37937e080000612b7b565b3410156114335760405162461bcd60e51b81526004016107b6906123c9565b3360009081526010602052604090205460ff1615156001146114675760405162461bcd60e51b81526004016107b690612638565b600e5433600090815260116020526040902054611485908490612b4f565b11156114a35760405162461bcd60e51b81526004016107b6906126ad565b33600090815260116020526040812080548492906114c2908490612b4f565b90915550600190505b82811161086e576114e03361091b8385612b4f565b806114ea81612c18565b9150506114cb565b6114fa6115d9565b6001600160a01b031661150b610e4b565b6001600160a01b0316146115315760405162461bcd60e51b81526004016107b690612897565b600f805460ff19811660ff90911615179055565b61154d6115d9565b6001600160a01b031661155e610e4b565b6001600160a01b0316146115845760405162461bcd60e51b81526004016107b690612897565b805161093290600b906020840190611ee4565b60006001600160e01b0319821663780e9d6360e01b14806106f557506106f5826119c6565b6000908152600260205260409020546001600160a01b0316151590565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061161282610b28565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611656826115bc565b6116725760405162461bcd60e51b81526004016107b690612661565b600061167d83610b28565b9050806001600160a01b0316846001600160a01b031614806116b85750836001600160a01b03166116ad8461078f565b6001600160a01b0316145b806116c857506116c88185611266565b949350505050565b826001600160a01b03166116e382610b28565b6001600160a01b0316146117095760405162461bcd60e51b81526004016107b6906128cc565b6001600160a01b03821661172f5760405162461bcd60e51b81526004016107b690612544565b61173a838383611a06565b6117456000826115dd565b6001600160a01b038316600090815260036020526040812080546001929061176e908490612b9a565b90915550506001600160a01b038216600090815260036020526040812080546001929061179c908490612b4f565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610932828260405180602001604052806000815250611a11565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6118748484846116d0565b61188084848484611a44565b6110ca5760405162461bcd60e51b81526004016107b69061243e565b60606012805461070c90612bdd565b6060816118d057506040805180820190915260018152600360fc1b60208201526106f8565b8160005b81156118fa57806118e481612c18565b91506118f39050600a83612b67565b91506118d4565b60008167ffffffffffffffff81111561192357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561194d576020820181803683370190505b5090505b84156116c857611962600183612b9a565b915061196f600a86612c33565b61197a906030612b4f565b60f81b81838151811061199d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506119bf600a86612b67565b9450611951565b60006001600160e01b031982166380ac58cd60e01b14806119f757506001600160e01b03198216635b5e139f60e01b145b806106f557506106f582611b5f565b61086e838383611b78565b611a1b8383611c01565b611a286000848484611a44565b61086e5760405162461bcd60e51b81526004016107b69061243e565b6000611a58846001600160a01b0316611ce0565b15611b5457836001600160a01b031663150b7a02611a746115d9565b8786866040518563ffffffff1660e01b8152600401611a96949392919061236e565b602060405180830381600087803b158015611ab057600080fd5b505af1925050508015611ae0575060408051601f3d908101601f19168201909252611add918101906121f2565b60015b611b3a573d808015611b0e576040519150601f19603f3d011682016040523d82523d6000602084013e611b13565b606091505b508051611b325760405162461bcd60e51b81526004016107b69061243e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506116c8565b506001949350505050565b6001600160e01b031981166301ffc9a760e01b14919050565b611b8383838361086e565b6001600160a01b038316611b9f57611b9a81611ce6565b611bc2565b816001600160a01b0316836001600160a01b031614611bc257611bc28382611d2a565b6001600160a01b038216611bde57611bd981611dc7565b61086e565b826001600160a01b0316826001600160a01b03161461086e5761086e8282611ea0565b6001600160a01b038216611c275760405162461bcd60e51b81526004016107b690612816565b611c30816115bc565b15611c4d5760405162461bcd60e51b81526004016107b6906124d6565b611c5960008383611a06565b6001600160a01b0382166000908152600360205260408120805460019290611c82908490612b4f565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b3b151590565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b60006001611d3784610beb565b611d419190612b9a565b600083815260076020526040902054909150808214611d94576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090611dd990600190612b9a565b60008381526009602052604081205460088054939450909284908110611e0f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060088381548110611e3e57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480611e8457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000611eab83610beb565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054611ef090612bdd565b90600052602060002090601f016020900481019282611f125760008555611f58565b82601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611f68565b5090565b5b80821115611f645760008155600101611f69565b600067ffffffffffffffff80841115611f9857611f98612c73565b604051601f8501601f191681016020018281118282101715611fbc57611fbc612c73565b604052848152915081838501861015611fd457600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b03811681146106f857600080fd5b600060208284031215612015578081fd5b6111fd82611fed565b60008060408385031215612030578081fd5b61203983611fed565b915061204760208401611fed565b90509250929050565b600080600060608486031215612064578081fd5b61206d84611fed565b925061207b60208501611fed565b9150604084013590509250925092565b600080600080608085870312156120a0578081fd5b6120a985611fed565b93506120b760208601611fed565b925060408501359150606085013567ffffffffffffffff8111156120d9578182fd5b8501601f810187136120e9578182fd5b6120f887823560208401611f7d565b91505092959194509250565b60008060408385031215612116578182fd5b61211f83611fed565b915060208301358015158114612133578182fd5b809150509250929050565b60008060408385031215612150578182fd5b61215983611fed565b946020939093013593505050565b60008060208385031215612179578182fd5b823567ffffffffffffffff80821115612190578384fd5b818501915085601f8301126121a3578384fd5b8135818111156121b1578485fd5b86602080830285010111156121c4578485fd5b60209290920196919550909350505050565b6000602082840312156121e7578081fd5b81356111fd81612c89565b600060208284031215612203578081fd5b81516111fd81612c89565b60006020828403121561221f578081fd5b813567ffffffffffffffff811115612235578182fd5b8201601f81018413612245578182fd5b6116c884823560208401611f7d565b600060208284031215612265578081fd5b5035919050565b60008151808452612284816020860160208601612bb1565b601f01601f19169290920160200192915050565b6000845160206122ab8285838a01612bb1565b8551918401916122be8184848a01612bb1565b85549201918390600281046001808316806122da57607f831692505b8583108114156122f857634e487b7160e01b88526022600452602488fd5b80801561230c576001811461231d57612349565b60ff19851688528388019550612349565b6123268b612b43565b895b858110156123415781548a820152908401908801612328565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123a19083018461226c565b9695505050505050565b901515815260200190565b6000602082526111fd602083018461226c565b60208082526010908201526f4e6f7420656e6f756768206d6f6e657960801b604082015260600190565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526018908201527f5f6d696e74416d6f756e74206d75737420626520617420300000000000000000604082015260600190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252601f908201527f45746865722076616c75652073656e74206973206e6f7420636f727265637400604082015260600190565b60208082526022908201527f53616c65206d7573742062652061637469766520746f206d696e7420546f6b656040820152616e7360f01b606082015260800190565b6020808252600f908201526e139bdd081bdb881d1a19481b1a5cdd608a1b604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b602080825260159082015274139bc81c1c995cd85b19481b5a5b9d1cc81b19599d605a1b604082015260600190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252602a908201527f507572636861736520776f756c6420657863656564206d617820737570706c79604082015269206f6620746f6b656e7360b01b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960408201526839903737ba1037bbb760b91b606082015260800190565b6020808252601f908201527f4d696e74206d757374206e6f742073757270617373206d6178537570706c7900604082015260600190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b6020808252601b908201527f4578636565646564206d617820746f6b656e2070757263686173650000000000604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b60208082526025908201527f50726573616c65206d7573742062652061637469766520746f206d696e7420546040820152646f6b656e7360d81b606082015260800190565b60208082526025908201527f5f6d696e74416d6f756e74206d757374206265203c3d2070726573616c654d616040820152641e135a5b9d60da1b606082015260800190565b90815260200190565b60009081526020902090565b60008219821115612b6257612b62612c47565b500190565b600082612b7657612b76612c5d565b500490565b6000816000190483118215151615612b9557612b95612c47565b500290565b600082821015612bac57612bac612c47565b500390565b60005b83811015612bcc578181015183820152602001612bb4565b838111156110ca5750506000910152565b600281046001821680612bf157607f821691505b60208210811415612c1257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612c2c57612c2c612c47565b5060010190565b600082612c4257612c42612c5d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461135d57600080fdfea26469706673582212206d7f4ad5fc2433e0bb83f1ce348942d87630e01e0c237f9c6586442c87fcff0e64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000041697066733a2f2f516d555179514569783164773458326a4a4b3367467770586f557843325a794b454a76425859706a344e455461522f68696464656e2e6a736f6e00000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _initNotRevealedUri (string): ipfs://QmUQyQEix1dw4X2jJK3gFwpXoUxC2ZyKEJvBXYpj4NETaR/hidden.json
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000041
Arg [2] : 697066733a2f2f516d555179514569783164773458326a4a4b3367467770586f
Arg [3] : 557843325a794b454a76425859706a344e455461522f68696464656e2e6a736f
Arg [4] : 6e00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
41571:5487:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42745:177;;;;;;;;;;-1:-1:-1;42745:177:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2349:98:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3860:217::-;;;;;;;;;;-1:-1:-1;3860:217:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3398:401::-;;;;;;;;;;-1:-1:-1;3398:401:3;;;;;:::i;:::-;;:::i;:::-;;41785:42:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1534:111:4:-;;;;;;;;;;;;;:::i;4724:330:3:-;;;;;;;;;;-1:-1:-1;4724:330:3;;;;;:::i;:::-;;:::i;45883:203:12:-;;;;;;;;;;;;;:::i;1210:253:4:-;;;;;;;;;;-1:-1:-1;1210:253:4;;;;;:::i;:::-;;:::i;46096:87:12:-;;;;;;;;;;;;;:::i;46918:137::-;;;;;;;;;;;;;:::i;5120:179:3:-;;;;;;;;;;-1:-1:-1;5120:179:3;;;;;:::i;:::-;;:::i;1717:230:4:-;;;;;;;;;;-1:-1:-1;1717:230:4;;;;;:::i;:::-;;:::i;41911:28:12:-;;;;;;;;;;;;;:::i;41982:33::-;;;;;;;;;;;;;:::i;45775:102::-;;;;;;;;;;-1:-1:-1;45775:102:12;;;;;:::i;:::-;;:::i;2052:235:3:-;;;;;;;;;;-1:-1:-1;2052:235:3;;;;;:::i;:::-;;:::i;41677:29:12:-;;;;;;;;;;;;;:::i;1790:205:3:-;;;;;;;;;;-1:-1:-1;1790:205:3;;;;;:::i;:::-;;:::i;1598:92:10:-;;;;;;;;;;;;;:::i;43158:311:12:-;;;;;;;;;;-1:-1:-1;43158:311:12;;;;;:::i;:::-;;:::i;41713:54::-;;;;;;;;;;;;;:::i;43590:210::-;;;;;;;;;;-1:-1:-1;43590:210:12;;;;;:::i;:::-;;:::i;966:85:10:-;;;;;;;;;;;;;:::i;41946:30:12:-;;;;;;;;;;;;;:::i;2511:102:3:-;;;;;;;;;;;;;:::i;46193:719:12:-;;;;;;:::i;:::-;;:::i;4144:290:3:-;;;;;;;;;;-1:-1:-1;4144:290:3;;;;;:::i;:::-;;:::i;45562:69:12:-;;;;;;;;;;;;;:::i;5365:320:3:-;;;;;;;;;;-1:-1:-1;5365:320:3;;;;;:::i;:::-;;:::i;42186:37:12:-;;;;;;;;;;;;;:::i;44903:537::-;;;;;;;;;;-1:-1:-1;44903:537:12;;;;;:::i;:::-;;:::i;43475:109::-;;;;;;;;;;-1:-1:-1;43475:109:12;;;;;:::i;:::-;;:::i;42932:120::-;;;;;;;;;;-1:-1:-1;42932:120:12;;;;;:::i;:::-;;:::i;4500:162:3:-;;;;;;;;;;-1:-1:-1;4500:162:3;;;;;:::i;:::-;;:::i;41873:32:12:-;;;;;;;;;;;;;:::i;45641:124::-;;;;;;;;;;-1:-1:-1;45641:124:12;;;;;:::i;:::-;;:::i;1839:189:10:-;;;;;;;;;;-1:-1:-1;1839:189:10;;;;;:::i;:::-;;:::i;41833:33:12:-;;;;;;;;;;;;;:::i;43806:829::-;;;;;;:::i;:::-;;:::i;43058:94::-;;;;;;;;;;;;;:::i;45446:106::-;;;;;;;;;;-1:-1:-1;45446:106:12;;;;;:::i;:::-;;:::i;42745:177::-;42856:4;42879:36;42903:11;42879:23;:36::i;:::-;42872:43;;42745:177;;;;:::o;2349:98:3:-;2403:13;2435:5;2428:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:98;:::o;3860:217::-;3936:7;3963:16;3971:7;3963;:16::i;:::-;3955:73;;;;-1:-1:-1;;;3955:73:3;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;4046:24:3;;;;:15;:24;;;;;;-1:-1:-1;;;;;4046:24:3;;3860:217::o;3398:401::-;3478:13;3494:23;3509:7;3494:14;:23::i;:::-;3478:39;;3541:5;-1:-1:-1;;;;;3535:11:3;:2;-1:-1:-1;;;;;3535:11:3;;;3527:57;;;;-1:-1:-1;;;3527:57:3;;;;;;;:::i;:::-;3632:5;-1:-1:-1;;;;;3616:21:3;:12;:10;:12::i;:::-;-1:-1:-1;;;;;3616:21:3;;:62;;;;3641:37;3658:5;3665:12;:10;:12::i;3641:37::-;3595:165;;;;-1:-1:-1;;;3595:165:3;;;;;;;:::i;:::-;3771:21;3780:2;3784:7;3771:8;:21::i;:::-;3398:401;;;:::o;41785:42:12:-;41825:2;41785:42;:::o;1534:111:4:-;1621:10;:17;1534:111;:::o;4724:330:3:-;4913:41;4932:12;:10;:12::i;:::-;4946:7;4913:18;:41::i;:::-;4905:103;;;;-1:-1:-1;;;4905:103:3;;;;;;;:::i;:::-;5019:28;5029:4;5035:2;5039:7;5019:9;:28::i;45883:203:12:-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;45943:11:12::1;45957:13;:11;:13::i;:::-;45943:27;;45980:6;45996:84;46012:3;46008:1;:7;45996:84;;;46036:33;46046:10;46058;46067:1:::0;46058:6;:10:::1;:::i;:::-;46036:9;:33::i;:::-;46017:3:::0;::::1;::::0;::::1;:::i;:::-;;;;45996:84;;;1248:1:10;;45883:203:12:o:0;1210:253:4:-;1307:7;1342:23;1359:5;1342:16;:23::i;:::-;1334:5;:31;1326:87;;;;-1:-1:-1;;;1326:87:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1430:19:4;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;1210:253::o;46096:87:12:-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;46164:12:12::1;::::0;;-1:-1:-1;;46148:28:12;::::1;46164:12;::::0;;::::1;46163:13;46148:28;::::0;;46096:87::o;46918:137::-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;47011:37:12::1;::::0;46980:21:::1;::::0;47019:10:::1;::::0;47011:37;::::1;;;::::0;46980:21;;46965:12:::1;47011:37:::0;46965:12;47011:37;46980:21;47019:10;47011:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;5120:179:3::0;5253:39;5270:4;5276:2;5280:7;5253:39;;;;;;;;;;;;:16;:39::i;1717:230:4:-;1792:7;1827:30;:28;:30::i;:::-;1819:5;:38;1811:95;;;;-1:-1:-1;;;1811:95:4;;;;;;;:::i;:::-;1923:10;1934:5;1923:17;;;;;;-1:-1:-1;;;1923:17:4;;;;;;;;;;;;;;;;;1916:24;;1717:230;;;:::o;41911:28:12:-;;;;;;;;;:::o;41982:33::-;;;;;;:::o;45775:102::-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;45849:21:12;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;2052:235:3:-:0;2124:7;2159:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2159:16:3;2193:19;2185:73;;;;-1:-1:-1;;;2185:73:3;;;;;;;:::i;41677:29:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1790:205:3:-;1862:7;-1:-1:-1;;;;;1889:19:3;;1881:74;;;;-1:-1:-1;;;1881:74:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1972:16:3;;;;;:9;:16;;;;;;;1790:205::o;1598:92:10:-;1189:12;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;1662:21:::1;1680:1;1662:9;:21::i;:::-;1598:92::o:0;43158:311:12:-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;43248:9:12::1;43243:220;43263:20:::0;;::::1;43243:220;;;43309:11;:25;43321:9;;43331:1;43321:12;;;;;-1:-1:-1::0;;;43321:12:12::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43309:25:12::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;43309:25:12;;::::1;;43304:149;;43382:4;43354:11;:25;43366:9;;43376:1;43366:12;;;;;-1:-1:-1::0;;;43366:12:12::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43354:25:12::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;43354:25:12;;;:32;;-1:-1:-1;;43354:32:12::1;::::0;::::1;;::::0;;;::::1;::::0;;;43404:16:::1;-1:-1:-1::0;43421:9:12;;43431:1;43421:12;;::::1;;;-1:-1:-1::0;;;43421:12:12::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;43404:30:12::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;43404:30:12;:34;43304:149:::1;43285:3:::0;::::1;::::0;::::1;:::i;:::-;;;;43243:220;;41713:54:::0;41750:17;41713:54;:::o;43590:210::-;-1:-1:-1;;;;;43682:17:12;;43659:7;43682:17;;;:11;:17;;;;;;;;43678:94;;;-1:-1:-1;;;;;43739:22:12;;;;;;:16;:22;;;;;;43722:14;;:39;;43739:22;43722:39;:::i;:::-;43715:46;;;;43678:94;-1:-1:-1;43792:1:12;43590:210;;;:::o;966:85:10:-;1038:6;;-1:-1:-1;;;;;1038:6:10;966:85;:::o;41946:30:12:-;;;;:::o;2511:102:3:-;2567:13;2599:7;2592:14;;;;;:::i;46193:719:12:-;46253:14;46270:13;:11;:13::i;:::-;46301:12;;46253:30;;-1:-1:-1;46301:12:12;;46293:59;;;;-1:-1:-1;;;46293:59:12;;;;;;;:::i;:::-;41825:2;46370:14;:34;;46362:74;;;;-1:-1:-1;;;46362:74:12;;;;;;;:::i;:::-;46532:10;;46514:14;46498:13;:11;:13::i;:::-;:30;;;;:::i;:::-;:44;;46490:99;;;;-1:-1:-1;;;46490:99:12;;;;;;;:::i;:::-;46682:9;46651:27;46664:14;41750:17;46651:27;:::i;:::-;:40;;46643:84;;;;-1:-1:-1;;;46643:84:12;;;;;;;:::i;:::-;46763:10;46746:28;;;;:16;:28;;;;;:46;;46778:14;;46746:28;:46;;46778:14;;46746:46;:::i;:::-;;;;-1:-1:-1;46819:1:12;;-1:-1:-1;46802:104:12;46827:14;46822:1;:19;46802:104;;46862:33;46872:10;46884;46893:1;46884:6;:10;:::i;46862:33::-;46843:3;;;;:::i;:::-;;;;46802:104;;4144:290:3;4258:12;:10;:12::i;:::-;-1:-1:-1;;;;;4246:24:3;:8;-1:-1:-1;;;;;4246:24:3;;;4238:62;;;;-1:-1:-1;;;4238:62:3;;;;;;;:::i;:::-;4356:8;4311:18;:32;4330:12;:10;:12::i;:::-;-1:-1:-1;;;;;4311:32:3;;;;;;;;;;;;;;;;;-1:-1:-1;4311:32:3;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;4311:53:3;;;;;;;;;;;4394:12;:10;:12::i;:::-;-1:-1:-1;;;;;4379:48:3;;4418:8;4379:48;;;;;;:::i;:::-;;;;;;;;4144:290;;:::o;45562:69:12:-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;45609:8:12::1;:15:::0;;-1:-1:-1;;45609:15:12::1;;;::::0;;45562:69::o;5365:320:3:-;5534:41;5553:12;:10;:12::i;:::-;5567:7;5534:18;:41::i;:::-;5526:103;;;;-1:-1:-1;;;5526:103:3;;;;;;;:::i;:::-;5639:39;5653:4;5659:2;5663:7;5672:5;5639:13;:39::i;:::-;5365:320;;;;:::o;42186:37:12:-;;;;;;;:::i;44903:537::-;45016:13;45066:16;45074:7;45066;:16::i;:::-;45045:110;;;;-1:-1:-1;;;45045:110:12;;;;;;;:::i;:::-;45169:8;;;;;;;45166:68;;45209:14;45202:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45166:68;45244:28;45275:10;:8;:10::i;:::-;45244:41;;45333:1;45308:14;45302:28;:32;:131;;;;;;;;;;;;;;;;;45369:14;45385:18;:7;:16;:18::i;:::-;45405:13;45352:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45302:131;45295:138;44903:537;-1:-1:-1;;;44903:537:12:o;43475:109::-;-1:-1:-1;;;;;43560:17:12;43537:4;43560:17;;;:11;:17;;;;;;;;;43475:109::o;42932:120::-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;43013:14:12::1;:32:::0;42932:120::o;4500:162:3:-;-1:-1:-1;;;;;4620:25:3;;;4597:4;4620:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4500:162::o;41873:32:12:-;;;;;;:::o;45641:124::-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;45726:32:12;;::::1;::::0;:14:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;1839:189:10:-:0;1189:12;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;-1:-1:-1;;;;;1927:22:10;::::1;1919:73;;;;-1:-1:-1::0;;;1919:73:10::1;;;;;;;:::i;:::-;2002:19;2012:8;2002:9;:19::i;:::-;1839:189:::0;:::o;41833:33:12:-;;;;:::o;43806:829::-;43873:14;43890:13;:11;:13::i;:::-;43921;;43873:30;;-1:-1:-1;43921:13:12;;43913:63;;;;-1:-1:-1;;;43913:63:12;;;;;;;:::i;:::-;44008:1;43994:11;:15;43986:52;;;;-1:-1:-1;;;43986:52:12;;;;;;;:::i;:::-;44071:14;;44056:11;:29;;44048:79;;;;-1:-1:-1;;;44048:79:12;;;;;;;:::i;:::-;44169:10;;44145:20;44154:11;44145:6;:20;:::i;:::-;:34;;44137:78;;;;-1:-1:-1;;;44137:78:12;;;;;;;:::i;:::-;44246:24;44259:11;41750:17;44246:24;:::i;:::-;44233:9;:37;;44225:66;;;;-1:-1:-1;;;44225:66:12;;;;;;;:::i;:::-;44321:10;44309:23;;;;:11;:23;;;;;;;;:31;;:23;:31;44301:59;;;;-1:-1:-1;;;44301:59:12;;;;;;;:::i;:::-;44424:14;;44395:10;44378:28;;;;:16;:28;;;;;;:42;;44409:11;;44378:42;:::i;:::-;:60;;44370:94;;;;-1:-1:-1;;;44370:94:12;;;;;;;:::i;:::-;44492:10;44475:28;;;;:16;:28;;;;;:43;;44507:11;;44475:28;:43;;44507:11;;44475:43;:::i;:::-;;;;-1:-1:-1;44545:1:12;;-1:-1:-1;44528:101:12;44553:11;44548:1;:16;44528:101;;44585:33;44595:10;44607;44616:1;44607:6;:10;:::i;44585:33::-;44566:3;;;;:::i;:::-;;;;44528:101;;43058:94;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;43132:13:12::1;::::0;;-1:-1:-1;;43115:30:12;::::1;43132:13;::::0;;::::1;43131:14;43115:30;::::0;;43058:94::o;45446:106::-;1189:12:10;:10;:12::i;:::-;-1:-1:-1;;;;;1178:23:10;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1178:23:10;;1170:68;;;;-1:-1:-1;;;1170:68:10;;;;;;;:::i;:::-;45522:23:12;;::::1;::::0;:10:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;909:222:4:-:0;1011:4;-1:-1:-1;;;;;;1034:50:4;;-1:-1:-1;;;1034:50:4;;:90;;;1088:36;1112:11;1088:23;:36::i;7157:125:3:-;7222:4;7245:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7245:16:3;:30;;;7157:125::o;586:96:1:-;665:10;586:96;:::o;11008:171:3:-;11082:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11082:29:3;-1:-1:-1;;;;;11082:29:3;;;;;;;;:24;;11135:23;11082:24;11135:14;:23::i;:::-;-1:-1:-1;;;;;11126:46:3;;;;;;;;;;;11008:171;;:::o;7440:344::-;7533:4;7557:16;7565:7;7557;:16::i;:::-;7549:73;;;;-1:-1:-1;;;7549:73:3;;;;;;;:::i;:::-;7632:13;7648:23;7663:7;7648:14;:23::i;:::-;7632:39;;7700:5;-1:-1:-1;;;;;7689:16:3;:7;-1:-1:-1;;;;;7689:16:3;;:51;;;;7733:7;-1:-1:-1;;;;;7709:31:3;:20;7721:7;7709:11;:20::i;:::-;-1:-1:-1;;;;;7709:31:3;;7689:51;:87;;;;7744:32;7761:5;7768:7;7744:16;:32::i;:::-;7681:96;7440:344;-1:-1:-1;;;;7440:344:3:o;10337:560::-;10491:4;-1:-1:-1;;;;;10464:31:3;:23;10479:7;10464:14;:23::i;:::-;-1:-1:-1;;;;;10464:31:3;;10456:85;;;;-1:-1:-1;;;10456:85:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;10559:16:3;;10551:65;;;;-1:-1:-1;;;10551:65:3;;;;;;;:::i;:::-;10627:39;10648:4;10654:2;10658:7;10627:20;:39::i;:::-;10728:29;10745:1;10749:7;10728:8;:29::i;:::-;-1:-1:-1;;;;;10768:15:3;;;;;;:9;:15;;;;;:20;;10787:1;;10768:15;:20;;10787:1;;10768:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10798:13:3;;;;;;:9;:13;;;;;:18;;10815:1;;10798:13;:18;;10815:1;;10798:18;:::i;:::-;;;;-1:-1:-1;;10826:16:3;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10826:21:3;-1:-1:-1;;;;;10826:21:3;;;;;;;;;10863:27;;10826:16;;10863:27;;;;;;;10337:560;;;:::o;8114:108::-;8189:26;8199:2;8203:7;8189:26;;;;;;;;;;;;:9;:26::i;2034:169:10:-;2108:6;;;-1:-1:-1;;;;;2124:17:10;;;-1:-1:-1;;;;;;2124:17:10;;;;;;;2156:40;;2108:6;;;2124:17;2108:6;;2156:40;;2089:16;;2156:40;2034:169;;:::o;6547:307:3:-;6698:28;6708:4;6714:2;6718:7;6698:9;:28::i;:::-;6744:48;6767:4;6773:2;6777:7;6786:5;6744:22;:48::i;:::-;6736:111;;;;-1:-1:-1;;;6736:111:3;;;;;;;:::i;44787:106:12:-;44847:13;44879:7;44872:14;;;;;:::i;275:703:11:-;331:13;548:10;544:51;;-1:-1:-1;574:10:11;;;;;;;;;;;;-1:-1:-1;;;574:10:11;;;;;;544:51;619:5;604:12;658:75;665:9;;658:75;;690:8;;;;:::i;:::-;;-1:-1:-1;712:10:11;;-1:-1:-1;720:2:11;712:10;;:::i;:::-;;;658:75;;;742:19;774:6;764:17;;;;;;-1:-1:-1;;;764:17:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;764:17:11;;742:39;;791:150;798:10;;791:150;;824:11;834:1;824:11;;:::i;:::-;;-1:-1:-1;892:10:11;900:2;892:5;:10;:::i;:::-;879:24;;:2;:24;:::i;:::-;866:39;;849:6;856;849:14;;;;;;-1:-1:-1;;;849:14:11;;;;;;;;;;;;:56;-1:-1:-1;;;;;849:56:11;;;;;;;;-1:-1:-1;919:11:11;928:2;919:11;;:::i;:::-;;;791:150;;1431:300:3;1533:4;-1:-1:-1;;;;;;1568:40:3;;-1:-1:-1;;;1568:40:3;;:104;;-1:-1:-1;;;;;;;1624:48:3;;-1:-1:-1;;;1624:48:3;1568:104;:156;;;;1688:36;1712:11;1688:23;:36::i;42479:179:12:-;42606:45;42633:4;42639:2;42643:7;42606:26;:45::i;8443:311:3:-;8568:18;8574:2;8578:7;8568:5;:18::i;:::-;8617:54;8648:1;8652:2;8656:7;8665:5;8617:22;:54::i;:::-;8596:151;;;;-1:-1:-1;;;8596:151:3;;;;;;;:::i;11732:782::-;11882:4;11902:15;:2;-1:-1:-1;;;;;11902:13:3;;:15::i;:::-;11898:610;;;11953:2;-1:-1:-1;;;;;11937:36:3;;11974:12;:10;:12::i;:::-;11988:4;11994:7;12003:5;11937:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11937:72:3;;;;;;;;-1:-1:-1;;11937:72:3;;;;;;;;;;;;:::i;:::-;;;11933:523;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12180:13:3;;12176:266;;12222:60;;-1:-1:-1;;;12222:60:3;;;;;;;:::i;12176:266::-;12394:6;12388:13;12379:6;12375:2;12371:15;12364:38;11933:523;-1:-1:-1;;;;;;12059:55:3;-1:-1:-1;;;12059:55:3;;-1:-1:-1;12052:62:3;;11898:610;-1:-1:-1;12493:4:3;11732:782;;;;;;:::o;763:155:2:-;-1:-1:-1;;;;;;871:40:2;;-1:-1:-1;;;871:40:2;763:155;;;:::o;2543:572:4:-;2682:45;2709:4;2715:2;2719:7;2682:26;:45::i;:::-;-1:-1:-1;;;;;2742:18:4;;2738:183;;2776:40;2808:7;2776:31;:40::i;:::-;2738:183;;;2845:2;-1:-1:-1;;;;;2837:10:4;:4;-1:-1:-1;;;;;2837:10:4;;2833:88;;2863:47;2896:4;2902:7;2863:32;:47::i;:::-;-1:-1:-1;;;;;2934:16:4;;2930:179;;2966:45;3003:7;2966:36;:45::i;:::-;2930:179;;;3038:4;-1:-1:-1;;;;;3032:10:4;:2;-1:-1:-1;;;;;3032:10:4;;3028:81;;3058:40;3086:2;3090:7;3058:27;:40::i;9076:372:3:-;-1:-1:-1;;;;;9155:16:3;;9147:61;;;;-1:-1:-1;;;9147:61:3;;;;;;;:::i;:::-;9227:16;9235:7;9227;:16::i;:::-;9226:17;9218:58;;;;-1:-1:-1;;;9218:58:3;;;;;;;:::i;:::-;9287:45;9316:1;9320:2;9324:7;9287:20;:45::i;:::-;-1:-1:-1;;;;;9343:13:3;;;;;;:9;:13;;;;;:18;;9360:1;;9343:13;:18;;9360:1;;9343:18;:::i;:::-;;;;-1:-1:-1;;9371:16:3;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9371:21:3;-1:-1:-1;;;;;9371:21:3;;;;;;;;9408:33;;9371:16;;;9408:33;;9371:16;;9408:33;9076:372;;:::o;718:377:0:-;1034:20;1080:8;;;718:377::o;3821:161:4:-;3924:10;:17;;3897:24;;;;:15;:24;;;;;:44;;;3951:24;;;;;;;;;;;;3821:161::o;4599:970::-;4861:22;4911:1;4886:22;4903:4;4886:16;:22::i;:::-;:26;;;;:::i;:::-;4922:18;4943:26;;;:17;:26;;;;;;4861:51;;-1:-1:-1;5073:28:4;;;5069:323;;-1:-1:-1;;;;;5139:18:4;;5117:19;5139:18;;;:12;:18;;;;;;;;:34;;;;;;;;;5188:30;;;;;;:44;;;5304:30;;:17;:30;;;;;:43;;;5069:323;-1:-1:-1;5485:26:4;;;;:17;:26;;;;;;;;5478:33;;;-1:-1:-1;;;;;5528:18:4;;;;;:12;:18;;;;;:34;;;;;;;5521:41;4599:970::o;5857:1061::-;6131:10;:17;6106:22;;6131:21;;6151:1;;6131:21;:::i;:::-;6162:18;6183:24;;;:15;:24;;;;;;6551:10;:26;;6106:46;;-1:-1:-1;6183:24:4;;6106:46;;6551:26;;;;-1:-1:-1;;;6551:26:4;;;;;;;;;;;;;;;;;6529:48;;6613:11;6588:10;6599;6588:22;;;;;;-1:-1:-1;;;6588:22:4;;;;;;;;;;;;;;;;;;;;:36;;;;6692:28;;;:15;:28;;;;;;;:41;;;6861:24;;;;;6854:31;6895:10;:16;;;;;-1:-1:-1;;;6895:16:4;;;;;;;;;;;;;;;;;;;;;;;;;;5857:1061;;;;:::o;3409:217::-;3493:14;3510:20;3527:2;3510:16;:20::i;:::-;-1:-1:-1;;;;;3540:16:4;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;3584:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;3409:217:4:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:607:13;;110:18;151:2;143:6;140:14;137:2;;;157:18;;:::i;:::-;206:2;200:9;279:2;256:17;;-1:-1:-1;;252:31:13;240:44;;286:4;236:55;306:18;;;326:22;;;303:46;300:2;;;352:18;;:::i;:::-;388:2;381:22;436;;;421:6;-1:-1:-1;421:6:13;473:16;;;470:25;-1:-1:-1;467:2:13;;;508:1;505;498:12;467:2;558:6;553:3;546:4;538:6;534:17;521:44;613:1;606:4;597:6;589;585:19;581:30;574:41;;;90:531;;;;;:::o;626:175::-;696:20;;-1:-1:-1;;;;;745:31:13;;735:42;;725:2;;791:1;788;781:12;806:198;;918:2;906:9;897:7;893:23;889:32;886:2;;;939:6;931;924:22;886:2;967:31;988:9;967:31;:::i;1009:274::-;;;1138:2;1126:9;1117:7;1113:23;1109:32;1106:2;;;1159:6;1151;1144:22;1106:2;1187:31;1208:9;1187:31;:::i;:::-;1177:41;;1237:40;1273:2;1262:9;1258:18;1237:40;:::i;:::-;1227:50;;1096:187;;;;;:::o;1288:342::-;;;;1434:2;1422:9;1413:7;1409:23;1405:32;1402:2;;;1455:6;1447;1440:22;1402:2;1483:31;1504:9;1483:31;:::i;:::-;1473:41;;1533:40;1569:2;1558:9;1554:18;1533:40;:::i;:::-;1523:50;;1620:2;1609:9;1605:18;1592:32;1582:42;;1392:238;;;;;:::o;1635:702::-;;;;;1807:3;1795:9;1786:7;1782:23;1778:33;1775:2;;;1829:6;1821;1814:22;1775:2;1857:31;1878:9;1857:31;:::i;:::-;1847:41;;1907:40;1943:2;1932:9;1928:18;1907:40;:::i;:::-;1897:50;;1994:2;1983:9;1979:18;1966:32;1956:42;;2049:2;2038:9;2034:18;2021:32;2076:18;2068:6;2065:30;2062:2;;;2113:6;2105;2098:22;2062:2;2141:22;;2194:4;2186:13;;2182:27;-1:-1:-1;2172:2:13;;2228:6;2220;2213:22;2172:2;2256:75;2323:7;2318:2;2305:16;2300:2;2296;2292:11;2256:75;:::i;:::-;2246:85;;;1765:572;;;;;;;:::o;2342:369::-;;;2468:2;2456:9;2447:7;2443:23;2439:32;2436:2;;;2489:6;2481;2474:22;2436:2;2517:31;2538:9;2517:31;:::i;:::-;2507:41;;2598:2;2587:9;2583:18;2570:32;2645:5;2638:13;2631:21;2624:5;2621:32;2611:2;;2672:6;2664;2657:22;2611:2;2700:5;2690:15;;;2426:285;;;;;:::o;2716:266::-;;;2845:2;2833:9;2824:7;2820:23;2816:32;2813:2;;;2866:6;2858;2851:22;2813:2;2894:31;2915:9;2894:31;:::i;:::-;2884:41;2972:2;2957:18;;;;2944:32;;-1:-1:-1;;;2803:179:13:o;2987:666::-;;;3134:2;3122:9;3113:7;3109:23;3105:32;3102:2;;;3155:6;3147;3140:22;3102:2;3200:9;3187:23;3229:18;3270:2;3262:6;3259:14;3256:2;;;3291:6;3283;3276:22;3256:2;3334:6;3323:9;3319:22;3309:32;;3379:7;3372:4;3368:2;3364:13;3360:27;3350:2;;3406:6;3398;3391:22;3350:2;3451;3438:16;3477:2;3469:6;3466:14;3463:2;;;3498:6;3490;3483:22;3463:2;3557:7;3552:2;3546;3538:6;3534:15;3530:2;3526:24;3522:33;3519:46;3516:2;;;3583:6;3575;3568:22;3516:2;3619;3611:11;;;;;3641:6;;-1:-1:-1;3092:561:13;;-1:-1:-1;;;;3092:561:13:o;3658:257::-;;3769:2;3757:9;3748:7;3744:23;3740:32;3737:2;;;3790:6;3782;3775:22;3737:2;3834:9;3821:23;3853:32;3879:5;3853:32;:::i;3920:261::-;;4042:2;4030:9;4021:7;4017:23;4013:32;4010:2;;;4063:6;4055;4048:22;4010:2;4100:9;4094:16;4119:32;4145:5;4119:32;:::i;4186:482::-;;4308:2;4296:9;4287:7;4283:23;4279:32;4276:2;;;4329:6;4321;4314:22;4276:2;4374:9;4361:23;4407:18;4399:6;4396:30;4393:2;;;4444:6;4436;4429:22;4393:2;4472:22;;4525:4;4517:13;;4513:27;-1:-1:-1;4503:2:13;;4559:6;4551;4544:22;4503:2;4587:75;4654:7;4649:2;4636:16;4631:2;4627;4623:11;4587:75;:::i;4673:190::-;;4785:2;4773:9;4764:7;4760:23;4756:32;4753:2;;;4806:6;4798;4791:22;4753:2;-1:-1:-1;4834:23:13;;4743:120;-1:-1:-1;4743:120:13:o;4868:259::-;;4949:5;4943:12;4976:6;4971:3;4964:19;4992:63;5048:6;5041:4;5036:3;5032:14;5025:4;5018:5;5014:16;4992:63;:::i;:::-;5109:2;5088:15;-1:-1:-1;;5084:29:13;5075:39;;;;5116:4;5071:50;;4919:208;-1:-1:-1;;4919:208:13:o;5132:1532::-;;5394:6;5388:13;5420:4;5433:51;5477:6;5472:3;5467:2;5459:6;5455:15;5433:51;:::i;:::-;5547:13;;5506:16;;;;5569:55;5547:13;5506:16;5591:15;;;5569:55;:::i;:::-;5715:13;;5646:20;;;5686:3;;5792:1;5777:17;;5813:1;5849:18;;;;5876:2;;5954:4;5944:8;5940:19;5928:31;;5876:2;6017;6007:8;6004:16;5984:18;5981:40;5978:2;;;-1:-1:-1;;;6044:33:13;;6100:4;6097:1;6090:15;6130:4;6051:3;6118:17;5978:2;6161:18;6188:110;;;;6312:1;6307:332;;;;6154:485;;6188:110;-1:-1:-1;;6223:24:13;;6209:39;;6268:20;;;;-1:-1:-1;6188:110:13;;6307:332;6343:39;6375:6;6343:39;:::i;:::-;6404:3;6420:169;6434:8;6431:1;6428:15;6420:169;;;6516:14;;6501:13;;;6494:37;6559:16;;;;6451:10;;6420:169;;;6424:3;;6620:8;6613:5;6609:20;6602:27;;6154:485;-1:-1:-1;6655:3:13;;5364:1300;-1:-1:-1;;;;;;;;;;;5364:1300:13:o;6669:203::-;-1:-1:-1;;;;;6833:32:13;;;;6815:51;;6803:2;6788:18;;6770:102::o;6877:490::-;-1:-1:-1;;;;;7146:15:13;;;7128:34;;7198:15;;7193:2;7178:18;;7171:43;7245:2;7230:18;;7223:34;;;7293:3;7288:2;7273:18;;7266:31;;;6877:490;;7314:47;;7341:19;;7333:6;7314:47;:::i;:::-;7306:55;7080:287;-1:-1:-1;;;;;;7080:287:13:o;7372:187::-;7537:14;;7530:22;7512:41;;7500:2;7485:18;;7467:92::o;7564:221::-;;7713:2;7702:9;7695:21;7733:46;7775:2;7764:9;7760:18;7752:6;7733:46;:::i;7790:340::-;7992:2;7974:21;;;8031:2;8011:18;;;8004:30;-1:-1:-1;;;8065:2:13;8050:18;;8043:46;8121:2;8106:18;;7964:166::o;8135:407::-;8337:2;8319:21;;;8376:2;8356:18;;;8349:30;8415:34;8410:2;8395:18;;8388:62;-1:-1:-1;;;8481:2:13;8466:18;;8459:41;8532:3;8517:19;;8309:233::o;8547:414::-;8749:2;8731:21;;;8788:2;8768:18;;;8761:30;8827:34;8822:2;8807:18;;8800:62;-1:-1:-1;;;8893:2:13;8878:18;;8871:48;8951:3;8936:19;;8721:240::o;8966:402::-;9168:2;9150:21;;;9207:2;9187:18;;;9180:30;9246:34;9241:2;9226:18;;9219:62;-1:-1:-1;;;9312:2:13;9297:18;;9290:36;9358:3;9343:19;;9140:228::o;9373:352::-;9575:2;9557:21;;;9614:2;9594:18;;;9587:30;9653;9648:2;9633:18;;9626:58;9716:2;9701:18;;9547:178::o;9730:348::-;9932:2;9914:21;;;9971:2;9951:18;;;9944:30;10010:26;10005:2;9990:18;;9983:54;10069:2;10054:18;;9904:174::o;10083:400::-;10285:2;10267:21;;;10324:2;10304:18;;;10297:30;10363:34;10358:2;10343:18;;10336:62;-1:-1:-1;;;10429:2:13;10414:18;;10407:34;10473:3;10458:19;;10257:226::o;10488:349::-;10690:2;10672:21;;;10729:2;10709:18;;;10702:30;10768:27;10763:2;10748:18;;10741:55;10828:2;10813:18;;10662:175::o;10842:355::-;11044:2;11026:21;;;11083:2;11063:18;;;11056:30;11122:33;11117:2;11102:18;;11095:61;11188:2;11173:18;;11016:181::o;11202:398::-;11404:2;11386:21;;;11443:2;11423:18;;;11416:30;11482:34;11477:2;11462:18;;11455:62;-1:-1:-1;;;11548:2:13;11533:18;;11526:32;11590:3;11575:19;;11376:224::o;11605:339::-;11807:2;11789:21;;;11846:2;11826:18;;;11819:30;-1:-1:-1;;;11880:2:13;11865:18;;11858:45;11935:2;11920:18;;11779:165::o;11949:408::-;12151:2;12133:21;;;12190:2;12170:18;;;12163:30;12229:34;12224:2;12209:18;;12202:62;-1:-1:-1;;;12295:2:13;12280:18;;12273:42;12347:3;12332:19;;12123:234::o;12362:345::-;12564:2;12546:21;;;12603:2;12583:18;;;12576:30;-1:-1:-1;;;12637:2:13;12622:18;;12615:51;12698:2;12683:18;;12536:171::o;12712:420::-;12914:2;12896:21;;;12953:2;12933:18;;;12926:30;12992:34;12987:2;12972:18;;12965:62;13063:26;13058:2;13043:18;;13036:54;13122:3;13107:19;;12886:246::o;13137:406::-;13339:2;13321:21;;;13378:2;13358:18;;;13351:30;13417:34;13412:2;13397:18;;13390:62;-1:-1:-1;;;13483:2:13;13468:18;;13461:40;13533:3;13518:19;;13311:232::o;13548:405::-;13750:2;13732:21;;;13789:2;13769:18;;;13762:30;13828:34;13823:2;13808:18;;13801:62;-1:-1:-1;;;13894:2:13;13879:18;;13872:39;13943:3;13928:19;;13722:231::o;13958:406::-;14160:2;14142:21;;;14199:2;14179:18;;;14172:30;14238:34;14233:2;14218:18;;14211:62;-1:-1:-1;;;14304:2:13;14289:18;;14282:40;14354:3;14339:19;;14132:232::o;14369:356::-;14571:2;14553:21;;;14590:18;;;14583:30;14649:34;14644:2;14629:18;;14622:62;14716:2;14701:18;;14543:182::o;14730:408::-;14932:2;14914:21;;;14971:2;14951:18;;;14944:30;15010:34;15005:2;14990:18;;14983:62;-1:-1:-1;;;15076:2:13;15061:18;;15054:42;15128:3;15113:19;;14904:234::o;15143:356::-;15345:2;15327:21;;;15364:18;;;15357:30;15423:34;15418:2;15403:18;;15396:62;15490:2;15475:18;;15317:182::o;15504:405::-;15706:2;15688:21;;;15745:2;15725:18;;;15718:30;15784:34;15779:2;15764:18;;15757:62;-1:-1:-1;;;15850:2:13;15835:18;;15828:39;15899:3;15884:19;;15678:231::o;15914:355::-;16116:2;16098:21;;;16155:2;16135:18;;;16128:30;16194:33;16189:2;16174:18;;16167:61;16260:2;16245:18;;16088:181::o;16274:411::-;16476:2;16458:21;;;16515:2;16495:18;;;16488:30;16554:34;16549:2;16534:18;;16527:62;-1:-1:-1;;;16620:2:13;16605:18;;16598:45;16675:3;16660:19;;16448:237::o;16690:397::-;16892:2;16874:21;;;16931:2;16911:18;;;16904:30;16970:34;16965:2;16950:18;;16943:62;-1:-1:-1;;;17036:2:13;17021:18;;17014:31;17077:3;17062:19;;16864:223::o;17092:351::-;17294:2;17276:21;;;17333:2;17313:18;;;17306:30;17372:29;17367:2;17352:18;;17345:57;17434:2;17419:18;;17266:177::o;17448:413::-;17650:2;17632:21;;;17689:2;17669:18;;;17662:30;17728:34;17723:2;17708:18;;17701:62;-1:-1:-1;;;17794:2:13;17779:18;;17772:47;17851:3;17836:19;;17622:239::o;17866:408::-;18068:2;18050:21;;;18107:2;18087:18;;;18080:30;18146:34;18141:2;18126:18;;18119:62;-1:-1:-1;;;18212:2:13;18197:18;;18190:42;18264:3;18249:19;;18040:234::o;18279:401::-;18481:2;18463:21;;;18520:2;18500:18;;;18493:30;18559:34;18554:2;18539:18;;18532:62;-1:-1:-1;;;18625:2:13;18610:18;;18603:35;18670:3;18655:19;;18453:227::o;18685:401::-;18887:2;18869:21;;;18926:2;18906:18;;;18899:30;18965:34;18960:2;18945:18;;18938:62;-1:-1:-1;;;19031:2:13;19016:18;;19009:35;19076:3;19061:19;;18859:227::o;19091:177::-;19237:25;;;19225:2;19210:18;;19192:76::o;19273:129::-;;19341:17;;;19391:4;19375:21;;;19331:71::o;19407:128::-;;19478:1;19474:6;19471:1;19468:13;19465:2;;;19484:18;;:::i;:::-;-1:-1:-1;19520:9:13;;19455:80::o;19540:120::-;;19606:1;19596:2;;19611:18;;:::i;:::-;-1:-1:-1;19645:9:13;;19586:74::o;19665:168::-;;19771:1;19767;19763:6;19759:14;19756:1;19753:21;19748:1;19741:9;19734:17;19730:45;19727:2;;;19778:18;;:::i;:::-;-1:-1:-1;19818:9:13;;19717:116::o;19838:125::-;;19906:1;19903;19900:8;19897:2;;;19911:18;;:::i;:::-;-1:-1:-1;19948:9:13;;19887:76::o;19968:258::-;20040:1;20050:113;20064:6;20061:1;20058:13;20050:113;;;20140:11;;;20134:18;20121:11;;;20114:39;20086:2;20079:10;20050:113;;;20181:6;20178:1;20175:13;20172:2;;;-1:-1:-1;;20216:1:13;20198:16;;20191:27;20021:205::o;20231:380::-;20316:1;20306:12;;20363:1;20353:12;;;20374:2;;20428:4;20420:6;20416:17;20406:27;;20374:2;20481;20473:6;20470:14;20450:18;20447:38;20444:2;;;20527:10;20522:3;20518:20;20515:1;20508:31;20562:4;20559:1;20552:15;20590:4;20587:1;20580:15;20444:2;;20286:325;;;:::o;20616:135::-;;-1:-1:-1;;20676:17:13;;20673:2;;;20696:18;;:::i;:::-;-1:-1:-1;20743:1:13;20732:13;;20663:88::o;20756:112::-;;20814:1;20804:2;;20819:18;;:::i;:::-;-1:-1:-1;20853:9:13;;20794:74::o;20873:127::-;20934:10;20929:3;20925:20;20922:1;20915:31;20965:4;20962:1;20955:15;20989:4;20986:1;20979:15;21005:127;21066:10;21061:3;21057:20;21054:1;21047:31;21097:4;21094:1;21087:15;21121:4;21118:1;21111:15;21137:127;21198:10;21193:3;21189:20;21186:1;21179:31;21229:4;21226:1;21219:15;21253:4;21250:1;21243:15;21269:133;-1:-1:-1;;;;;;21345:32:13;;21335:43;;21325:2;;21392:1;21389;21382:12
Swarm Source
ipfs://6d7f4ad5fc2433e0bb83f1ce348942d87630e01e0c237f9c6586442c87fcff0e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.