[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isInverted", "type": "bool" } ], "name": "ColorsInverted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ColorsReset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "textColor", "type": "string" }, { "indexed": false, "internalType": "string", "name": "backgroundColor", "type": "string" } ], "name": "ColorsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Mint", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "WordBlocked", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseColorsAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "buildAttributesJSON", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "buildSVG", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "colorChangeCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "earlyAccessEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "earlyAccessList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "colorhex", "type": "string" } ], "name": "getColorName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenData", "outputs": [ { "components": [ { "internalType": "string", "name": "word1", "type": "string" }, { "internalType": "string", "name": "word2", "type": "string" }, { "internalType": "string", "name": "word3", "type": "string" }, { "internalType": "string", "name": "backgroundColor", "type": "string" }, { "internalType": "string", "name": "textColor", "type": "string" }, { "internalType": "bool", "name": "isTextColored", "type": "bool" }, { "internalType": "bool", "name": "isBackgroundColored", "type": "bool" }, { "internalType": "bool", "name": "isInverted", "type": "bool" }, { "internalType": "uint256", "name": "wordCount", "type": "uint256" } ], "internalType": "struct WordData.TokenData", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "invertDefaultColors", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "lockMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTeamMintAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadataLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "words", "type": "string[]" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "mintedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string[]", "name": "words", "type": "string[]" } ], "name": "preMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "resetColors", "outputs": [], "stateMutability": "nonpayable", "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": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setEarlyAccessEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_address", "type": "address[]" }, { "internalType": "bool", "name": "isWhitelisted", "type": "bool" } ], "name": "setEarlyAccessList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_stageTwoAddress", "type": "address" } ], "name": "setStageTwoAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "isTeamWallet", "type": "bool" } ], "name": "setTeamWallets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "blocked", "type": "bool" } ], "name": "setWordBlocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stageTwoAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "string[]", "name": "words", "type": "string[]" } ], "name": "teamMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "teamMintEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "teamMintedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "teamWallets", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "toggleTeamMinting", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenData", "outputs": [ { "internalType": "string", "name": "word1", "type": "string" }, { "internalType": "string", "name": "word2", "type": "string" }, { "internalType": "string", "name": "word3", "type": "string" }, { "internalType": "string", "name": "backgroundColor", "type": "string" }, { "internalType": "string", "name": "textColor", "type": "string" }, { "internalType": "bool", "name": "isTextColored", "type": "bool" }, { "internalType": "bool", "name": "isBackgroundColored", "type": "bool" }, { "internalType": "bool", "name": "isInverted", "type": "bool" }, { "internalType": "uint256", "name": "wordCount", "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": "result", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "colorTokenBackground", "type": "uint256" }, { "internalType": "uint256", "name": "colorTokenWord", "type": "uint256" } ], "name": "updateAllColors", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "colorTokenBackground", "type": "uint256" } ], "name": "updateBackgroundColor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "colorTokenWord", "type": "uint256" } ], "name": "updateWordColor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "usedCombinations", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "wordBlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "words", "type": "string[]" } ], "name": "wordVerify", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "enum WordVerifyStatus", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ]
600c80546001600160a01b0319167377777777777777777777777777777777777777771790556101c060405261010c608081815290615ad360a039600f90610047908261028d565b506040805180820190915260068152651e17b9bb339f60d11b6020820152601090610072908261028d565b506014805460ff1990811690915566038d7ea4c680006015556016805482169055600a6019819055601a8054909216909155601d55601e80546001600160a81b03191674c897851cd0b04afc8c8467594acb9fc60a39b9fe001790553480156100d9575f80fd5b50604080518082018252600981526842617365576f72647360b81b60208083019190915282518084019093526005835264574f52445360d81b9083015290338061013c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610145816101a6565b50600180556004610156838261028d565b506005610163828261028d565b5060016002555050600d8054737bc1c072742d8391817eb4eb2317f98dc72c61db6001600160a01b03199182168117909255600e80549091169091179055610347565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061021d57607f821691505b60208210810361023b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561028857805f5260205f20601f840160051c810160208510156102665750805b601f840160051c820191505b81811015610285575f8155600101610272565b50505b505050565b81516001600160401b038111156102a6576102a66101f5565b6102ba816102b48454610209565b84610241565b6020601f8211600181146102ec575f83156102d55750848201515b5f19600385901b1c1916600184901b178455610285565b5f84815260208120601f198516915b8281101561031b57878501518255602094850194600190920191016102fb565b508482101561033857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61577f806103545f395ff3fe60806040526004361061035b575f3560e01c80636817c76c116101bd578063b4b5b48f116100f2578063d3008dcc11610092578063e985e9c51161006d578063e985e9c514610984578063f2fde38b146109a3578063fbbf8cc3146109c2578063fdf7d2c0146109ed575f80fd5b8063d3008dcc1461091f578063d85c36ac1461094c578063d99f35b71461096b575f80fd5b8063b957fafe116100cd578063b957fafe146108b3578063c0873bad146108c8578063c87b56dd146108e7578063d123973014610906575f80fd5b8063b4b5b48f1461084d578063b88d4fde14610881578063b89c122a14610894575f80fd5b80638da5cb5b1161015d578063a22cb46511610138578063a22cb465146107c2578063a27c2df9146107e1578063b09afec11461080c578063b41543a214610838575f80fd5b80638da5cb5b1461077e57806395d89b411461079a578063989bdbb6146107ae575f80fd5b806370a082311161019857806370a0823114610718578063715018a614610737578063787436971461074b5780637d55094d1461076a575f80fd5b80636817c76c146106d657806369d2ceb1146106eb5780636ba0340014610704575f80fd5b80633e53eb2811610293578063576fd37f116102335780635a89f3561161020e5780635a89f356146106605780635cdb83e11461067f5780636352211e1461069857806366b37b08146106b7575f80fd5b8063576fd37f14610603578063588635ee146106225780635a75f45014610641575f80fd5b8063520ff8da1161026e578063520ff8da1461059e578063530b8712146105bd5780635752998a146105dc5780635768f271146105f0575f80fd5b80633e53eb281461053e57806342842e0e1461055d57806349bc4aed14610570575f80fd5b8063166a8c9b116102fe578063239c70ae116102d9578063239c70ae146104d457806323b872dd146104e95780632f526ded146104fc5780633ccfd60b1461052a575f80fd5b8063166a8c9b1461046c57806318160ddd1461048b5780631a42efea146104b5575f80fd5b8063095ea7b311610339578063095ea7b3146103eb5780630a5facd3146104005780630b4297271461041f5780630e0265331461044d575f80fd5b806301ffc9a71461035f57806306fdde0314610393578063081812fc146103b4575b5f80fd5b34801561036a575f80fd5b5061037e610379366004614166565b610a1b565b60405190151581526020015b60405180910390f35b34801561039e575f80fd5b506103a7610a6c565b60405161038a91906141af565b3480156103bf575f80fd5b506103d36103ce3660046141c1565b610afc565b6040516001600160a01b03909116815260200161038a565b6103fe6103f93660046141ec565b610b35565b005b34801561040b575f80fd5b506103fe61041a3660046141c1565b610b45565b34801561042a575f80fd5b5061037e6104393660046141c1565b60126020525f908152604090205460ff1681565b348015610458575f80fd5b506103fe6104673660046143ab565b610da3565b348015610477575f80fd5b506103fe6104863660046141c1565b610e91565b348015610496575f80fd5b506104a7600354600254035f190190565b60405190815260200161038a565b3480156104c0575f80fd5b506103fe6104cf36600461440f565b610fc5565b3480156104df575f80fd5b506104a760195481565b6103fe6104f73660046144ba565b61102c565b348015610507575f80fd5b5061037e6105163660046144f8565b60176020525f908152604090205460ff1681565b348015610535575f80fd5b506103fe611194565b348015610549575f80fd5b506103a76105583660046141c1565b61123b565b6103fe61056b3660046144ba565b61129a565b34801561057b575f80fd5b5061037e61058a3660046141c1565b60136020525f908152604090205460ff1681565b3480156105a9575f80fd5b506103fe6105b8366004614513565b6112b4565b3480156105c8575f80fd5b506103fe6105d7366004614544565b61145d565b3480156105e7575f80fd5b506103fe61169f565b6103fe6105fe366004614513565b6116bb565b34801561060e575f80fd5b506103fe61061d3660046144f8565b611919565b34801561062d575f80fd5b506103a761063c366004614564565b611943565b34801561064c575f80fd5b50600c546103d3906001600160a01b031681565b34801561066b575f80fd5b50600d546103d3906001600160a01b031681565b34801561068a575f80fd5b50601a5461037e9060ff1681565b3480156106a3575f80fd5b506103d36106b23660046141c1565b611c78565b3480156106c2575f80fd5b506103fe6106d1366004614595565b611c82565b3480156106e1575f80fd5b506104a760155481565b3480156106f6575f80fd5b50601e5461037e9060ff1681565b34801561070f575f80fd5b506103fe611cb4565b348015610723575f80fd5b506104a76107323660046144f8565b611cd0565b348015610742575f80fd5b506103fe611d13565b348015610756575f80fd5b506103fe6107653660046145cc565b611d24565b348015610775575f80fd5b506103fe611d38565b348015610789575f80fd5b505f546001600160a01b03166103d3565b3480156107a5575f80fd5b506103a7611d54565b3480156107b9575f80fd5b506103fe611d63565b3480156107cd575f80fd5b506103fe6107dc366004614595565b611d7a565b3480156107ec575f80fd5b506104a76107fb3660046144f8565b601c6020525f908152604090205481565b348015610817575f80fd5b5061082b6108263660046141c1565b611de5565b60405161038a91906145f5565b348015610843575f80fd5b506104a7601d5481565b348015610858575f80fd5b5061086c6108673660046141c1565b61215d565b60405161038a999897969594939291906146d3565b6103fe61088f36600461475f565b61244a565b34801561089f575f80fd5b506103fe6108ae3660046147d9565b61248b565b3480156108be575f80fd5b506104a7600b5481565b3480156108d3575f80fd5b506103a76108e23660046141c1565b612549565b3480156108f2575f80fd5b506103a76109013660046141c1565b612c24565b348015610911575f80fd5b5060145461037e9060ff1681565b34801561092a575f80fd5b5061093e610939366004614513565b612d14565b60405161038a9291906147fc565b348015610957575f80fd5b506103fe610966366004614544565b612f1b565b348015610976575f80fd5b5060165461037e9060ff1681565b34801561098f575f80fd5b5061037e61099e36600461482e565b6130f8565b3480156109ae575f80fd5b506103fe6109bd3660046144f8565b613125565b3480156109cd575f80fd5b506104a76109dc3660046144f8565b60186020525f908152604090205481565b3480156109f8575f80fd5b5061037e610a073660046144f8565b601b6020525f908152604090205460ff1681565b5f6301ffc9a760e01b6001600160e01b031983161480610a4b57506380ac58cd60e01b6001600160e01b03198316145b80610a665750635b5e139f60e01b6001600160e01b03198316145b92915050565b606060048054610a7b9061485a565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa79061485a565b8015610af25780601f10610ac957610100808354040283529160200191610af2565b820191905f5260205f20905b815481529060010190602001808311610ad557829003601f168201915b5050505050905090565b5f610b0682613162565b610b1a57610b1a6333d1c03960e21b6131ab565b505f908152600860205260409020546001600160a01b031690565b610b41828260016131b3565b5050565b33610b4f82611c78565b6001600160a01b031614610b7e5760405162461bcd60e51b8152600401610b7590614892565b60405180910390fd5b5f8181526012602052604090205460ff1615610bac5760405162461bcd60e51b8152600401610b75906148c9565b5f81815260116020526040902060050154610100900460ff16158015610be357505f8181526011602052604090206005015460ff16155b610c3b5760405162461bcd60e51b815260206004820152602360248201527f426f746820636f6c6f7273206d75737420626520756e73657420746f20696e76604482015262195c9d60ea1b6064820152608401610b75565b5f818152601160205260409020600581015462010000900460ff16610cce5760408051808201909152600781526611a3232323232360c91b60208201526004820190610c879082614937565b506040805180820190915260078152661198181a99232360c91b60208201526003820190610cb59082614937565b5060058101805462ff0000191662010000179055610d39565b6040805180820190915260078152661198181a99232360c91b60208201526004820190610cfb9082614937565b5060408051808201909152600781526611a3232323232360c91b60208201526003820190610d299082614937565b5060058101805462ff0000191690555b6040518281525f8051602061572a8339815191529060200160405180910390a160058101546040516201000090910460ff161515815282907f3053e89559630abc633c072214d16ad79780c2ce7e7adeb2e28f798f2331598f906020015b60405180910390a25050565b610dab613254565b60145460ff1615610dfe5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7420697320656e61626c6564202d206e6f207072652d6d696e747300006044820152606401610b75565b5f610e0860025490565b90505f610e1483612d14565b50905080610e345760405162461bcd60e51b8152600401610b75906149f1565b610e3d83613280565b610e48846001613525565b836001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688583604051610e8391815260200190565b60405180910390a250505050565b33610e9b82611c78565b6001600160a01b031614610ec15760405162461bcd60e51b8152600401610b7590614892565b5f8181526012602052604090205460ff1615610eef5760405162461bcd60e51b8152600401610b75906148c9565b5f81815260116020908152604091829020825180840190935260078352661198181a99232360c91b91830191909152906004820190610f2e9082614937565b5060058101805460ff1916905560408051808201909152600781526611a3232323232360c91b60208201526003820190610f689082614937565b5060058101805462ffff00191690556040518281525f8051602061572a8339815191529060200160405180910390a160405182907fc5508a5256f5a75dbe764b51044251e2ef21b9b59f38fb61f57f7a9a7010e762905f90a25050565b610fcd613254565b5f5b8251811015611027578160175f858481518110610fee57610fee614a28565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610fcf565b505050565b5f6110368261353e565b6001600160a01b03948516949091508116841461105c5761105c62a1148160e81b6131ab565b5f8281526008602052604090208054338082146001600160a01b0388169091141761109f5761108b86336130f8565b61109f5761109f632ce44b5f60e11b6131ab565b80156110a9575f82555b6001600160a01b038681165f9081526007602052604080822080545f19019055918716808252919020805460010190554260a01b17600160e11b175f85815260066020526040812091909155600160e11b8416900361113657600184015f818152600660205260408120549003611134576002548114611134575f8181526006602052604090208490555b505b6001600160a01b0385168481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4805f0361117e5761117e633a954ecd60e21b6131ab565b61118b87878760016135d8565b50505050505050565b61119c613254565b6111a461361a565b60405147905f90339083908381818185875af1925050503d805f81146111e5576040519150601f19603f3d011682016040523d82523d5f602084013e6111ea565b606091505b505090508061122e5760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610b75565b505061123960018055565b565b606061124682613162565b6112895760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401610b75565b5f61129383613644565b9392505050565b61102783838360405180602001604052805f81525061244a565b5f6112be60025490565b601a5490915060ff166113135760405162461bcd60e51b815260206004820152601860248201527f5465616d206d696e74206973206e6f7420656e61626c656400000000000000006044820152606401610b75565b335f908152601b602052604090205460ff166113715760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742061207465616d2077616c6c657400000000006044820152606401610b75565b601d54335f908152601c6020526040902054106113c55760405162461bcd60e51b8152602060048201526012602482015271135a5b9d081b1a5b5a5d081c995858da195960721b6044820152606401610b75565b335f908152601c602052604081208054916113df83614a50565b91905055505f6113ee83612d14565b5090508061140e5760405162461bcd60e51b8152600401610b75906149f1565b61141783613280565b611422336001613525565b60405182815233907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885906020015b60405180910390a2505050565b3361146783611c78565b6001600160a01b03161461148d5760405162461bcd60e51b8152600401610b7590614892565b5f8281526012602052604090205460ff16156114bb5760405162461bcd60e51b8152600401610b75906148c9565b5f8281526011602052604090819020600e5491516331a9108f60e11b815260048101849052909133916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611514573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115389190614a68565b6001600160a01b0316146115a55760405162461bcd60e51b815260206004820152602e60248201527f43616c6c657220646f6573206e6f74206f776e20746865206261636b67726f7560448201526d37321031b7b637b9103a37b5b2b760911b6064820152608401610b75565b600e5460405163ea22071760e01b8152600481018490526001600160a01b039091169063ea220717906024015f60405180830381865afa1580156115eb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116129190810190614ad0565b60038201906116219082614937565b5060058101805461ff001916610100179055600b8054905f61164283614a50565b90915550506040518381525f8051602061572a8339815191529060200160405180910390a1827f6ad6c357f38e7a365808721f092577557e1a06c44da12f58e0d233612350c3c38260040183600301604051611450929190614b80565b6116a7613254565b601a805460ff19811660ff90911615179055565b6015545f6116c860025490565b335f9081526017602052604090205490915060ff1680156116eb575060165460ff165b1561177357601954335f908152601860205260409020541061174f5760405162461bcd60e51b815260206004820152601f60248201527f4561726c7920616363657373206d696e74206c696d69742072656163686564006044820152606401610b75565b335f90815260186020526040812080549161176983614a50565b91905055506117b8565b60145460ff166117b85760405162461bcd60e51b815260206004820152601060248201526f135a5b9d081b9bdd081cdd185c9d195960821b6044820152606401610b75565b8134146118075760405162461bcd60e51b815260206004820181905260248201527f506c656173652073656e64207468652065786163742045544820616d6f756e746044820152606401610b75565b5f61181184612d14565b509050806118315760405162461bcd60e51b8152600401610b75906149f1565b61183a84613280565b601e546040515f9161010090046001600160a01b03169085908381818185875af1925050503d805f8114611889576040519150601f19603f3d011682016040523d82523d5f602084013e61188e565b606091505b50509050806118d25760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610b75565b6118dd336001613525565b60405183815233907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859060200160405180910390a25050505050565b611921613254565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600e54604051631c2fefc160e31b81526060916001600160a01b03169063e17f7e08906119749085906004016141af565b5f60405180830381865afa9250505080156119b057506040513d5f823e601f3d908101601f191682016040526119ad9190810190614bad565b60015b6119b8575090565b600e5481516040516344ef8f7d60e01b815260048101919091525f916001600160a01b0316906344ef8f7d906024015f60405180830381865afa158015611a01573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a289190810190614ad0565b90505f8190505f60405180606001604052806023815260200161570760239139604080518082019091526002815261227d60f01b60208201529091505f805b83518551611a759190614cb8565b811015611b0d5760015f5b8551811015611ae957858181518110611a9b57611a9b614a28565b01602001516001600160f81b03191687611ab58386614ccb565b81518110611ac557611ac5614a28565b01602001516001600160f81b03191614611ae1575f9150611ae9565b600101611a80565b508015611b04578451611afc9083614ccb565b925050611b0d565b50600101611a67565b5080805b83518651611b1f9190614cb8565b811015611bac5760015f5b8551811015611b9357858181518110611b4557611b45614a28565b01602001516001600160f81b03191688611b5f8386614ccb565b81518110611b6f57611b6f614a28565b01602001516001600160f81b03191614611b8b575f9150611b93565b600101611b2a565b508015611ba35781925050611bac565b50600101611b11565b505f611bb88383614cb8565b6001600160401b03811115611bcf57611bcf614216565b6040519080825280601f01601f191660200182016040528015611bf9576020820181803683370190505b5090505f5b611c088484614cb8565b811015611c655786611c1a8286614ccb565b81518110611c2a57611c2a614a28565b602001015160f81c60f81b828281518110611c4757611c47614a28565b60200101906001600160f81b03191690815f1a905350600101611bfe565b509998505050505050505050565b919050565b5f610a668261353e565b611c8a613254565b6001600160a01b03919091165f908152601b60205260409020805460ff1916911515919091179055565b611cbc613254565b6016805460ff19811660ff90911615179055565b5f6001600160a01b038216611cef57611cef6323d3ad8160e21b6131ab565b506001600160a01b03165f908152600760205260409020546001600160401b031690565b611d1b613254565b6112395f613c0b565b611d2e838361145d565b6110278382612f1b565b611d40613254565b6014805460ff19811660ff90911615179055565b606060058054610a7b9061485a565b611d6b613254565b601e805460ff19166001179055565b335f8181526009602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611e3660405180610120016040528060608152602001606081526020016060815260200160608152602001606081526020015f151581526020015f151581526020015f151581526020015f81525090565b5f828152601160205260409081902081516101208101909252805482908290611e5e9061485a565b80601f0160208091040260200160405190810160405280929190818152602001828054611e8a9061485a565b8015611ed55780601f10611eac57610100808354040283529160200191611ed5565b820191905f5260205f20905b815481529060010190602001808311611eb857829003601f168201915b50505050508152602001600182018054611eee9061485a565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1a9061485a565b8015611f655780601f10611f3c57610100808354040283529160200191611f65565b820191905f5260205f20905b815481529060010190602001808311611f4857829003601f168201915b50505050508152602001600282018054611f7e9061485a565b80601f0160208091040260200160405190810160405280929190818152602001828054611faa9061485a565b8015611ff55780601f10611fcc57610100808354040283529160200191611ff5565b820191905f5260205f20905b815481529060010190602001808311611fd857829003601f168201915b5050505050815260200160038201805461200e9061485a565b80601f016020809104026020016040519081016040528092919081815260200182805461203a9061485a565b80156120855780601f1061205c57610100808354040283529160200191612085565b820191905f5260205f20905b81548152906001019060200180831161206857829003601f168201915b5050505050815260200160048201805461209e9061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546120ca9061485a565b80156121155780601f106120ec57610100808354040283529160200191612115565b820191905f5260205f20905b8154815290600101906020018083116120f857829003601f168201915b5050509183525050600582015460ff80821615156020840152610100820481161515604084015262010000909104161515606082015260069091015460809091015292915050565b60116020525f90815260409020805481906121779061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546121a39061485a565b80156121ee5780601f106121c5576101008083540402835291602001916121ee565b820191905f5260205f20905b8154815290600101906020018083116121d157829003601f168201915b5050505050908060010180546122039061485a565b80601f016020809104026020016040519081016040528092919081815260200182805461222f9061485a565b801561227a5780601f106122515761010080835404028352916020019161227a565b820191905f5260205f20905b81548152906001019060200180831161225d57829003601f168201915b50505050509080600201805461228f9061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546122bb9061485a565b80156123065780601f106122dd57610100808354040283529160200191612306565b820191905f5260205f20905b8154815290600101906020018083116122e957829003601f168201915b50505050509080600301805461231b9061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546123479061485a565b80156123925780601f1061236957610100808354040283529160200191612392565b820191905f5260205f20905b81548152906001019060200180831161237557829003601f168201915b5050505050908060040180546123a79061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546123d39061485a565b801561241e5780601f106123f55761010080835404028352916020019161241e565b820191905f5260205f20905b81548152906001019060200180831161240157829003601f168201915b5050506005840154600690940154929360ff808216946101008304821694506201000090920416915089565b61245584848461102c565b6001600160a01b0383163b156124855761247184848484613c5a565b612485576124856368d2bf6b60e11b6131ab565b50505050565b612493613254565b601e5460ff16156124db5760405162461bcd60e51b815260206004820152601260248201527113595d1859185d18481a5cc81b1bd8dad95960721b6044820152606401610b75565b5f82815260126020908152604091829020805460ff191684151517905590518381525f8051602061572a833981519152910160405180910390a1817fdf28793230f900a5ab51921eaa68756637725da08379803f6c7791903fa37bae82604051610d97911515815260200190565b606061255482613162565b6125975760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606401610b75565b5f8281526012602052604090205460ff16156125cc576040518060600160405280602981526020016156de6029913992915050565b5f82815260116020526040808220815161012081019092528054829082906125f39061485a565b80601f016020809104026020016040519081016040528092919081815260200182805461261f9061485a565b801561266a5780601f106126415761010080835404028352916020019161266a565b820191905f5260205f20905b81548152906001019060200180831161264d57829003601f168201915b505050505081526020016001820180546126839061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546126af9061485a565b80156126fa5780601f106126d1576101008083540402835291602001916126fa565b820191905f5260205f20905b8154815290600101906020018083116126dd57829003601f168201915b505050505081526020016002820180546127139061485a565b80601f016020809104026020016040519081016040528092919081815260200182805461273f9061485a565b801561278a5780601f106127615761010080835404028352916020019161278a565b820191905f5260205f20905b81548152906001019060200180831161276d57829003601f168201915b505050505081526020016003820180546127a39061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546127cf9061485a565b801561281a5780601f106127f15761010080835404028352916020019161281a565b820191905f5260205f20905b8154815290600101906020018083116127fd57829003601f168201915b505050505081526020016004820180546128339061485a565b80601f016020809104026020016040519081016040528092919081815260200182805461285f9061485a565b80156128aa5780601f10612881576101008083540402835291602001916128aa565b820191905f5260205f20905b81548152906001019060200180831161288d57829003601f168201915b5050509183525050600582015460ff80821615156020808501919091526101008304821615156040808601919091526201000090930490911615156060840152600690930154608090920191909152805180820190915260018152605b60f81b918101919091528151519192509015612942578151604051612930918391602001614cf5565b60405160208183030381529060405290505b6020820151511561297657808260200151604051602001612964929190614d4e565b60405160208183030381529060405290505b604082015151156129aa57808260400151604051602001612998929190614d94565b60405160208183030381529060405290505b806129b9836101000151613d39565b6040516020016129ca929190614dda565b60405160208183030381529060405290508160c0015180156129ed57508160a001515b15612a195780604051602001612a039190614e23565b6040516020818303038152906040529050612a3c565b80604051602001612a2a9190614e71565b60405160208183030381529060405290505b8160c0015115612aa7576060820151604051612a5c918391602001614ebe565b60405160208183030381529060405290505f612a7b8360600151611943565b90508181604051602001612a90929190614f0b565b604051602081830303815290604052915050612afb565b8160e0015115612ad85780604051602001612ac29190614f5f565b6040516020818303038152906040529050612afb565b80604051602001612ae99190614fbd565b60405160208183030381529060405290505b8160a0015115612b66576080820151604051612b1b91839160200161501b565b60405160208183030381529060405290505f612b3a8360800151611943565b90508181604051602001612b4f929190615062565b604051602081830303815290604052915050612bba565b8160e0015115612b975780604051602001612b8191906150b0565b6040516020818303038152906040529050612bba565b80604051602001612ba89190615103565b60405160208183030381529060405290505b612bc384611c78565b600c546001600160a01b03918216911603612bfb5780604051602001612be99190615155565b60405160208183030381529060405290505b80604051602001612c0c919061519c565b60408051601f19818403018152919052949350505050565b6060612c2f82613162565b612c935760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b75565b5f612c9d83613644565b90505f612ca982613dc8565b90505f612cb585613d39565b82612cbf87612549565b604051602001612cd1939291906151b8565b6040516020818303038152906040529050612ceb81613dc8565b604051602001612cfb9190615370565b6040516020818303038152906040529350505050919050565b5f8082515f1480612d26575060038351115b15612d3657505f92600192509050565b5f5b8351811015612e34575f848281518110612d5457612d54614a28565b602002602001015190505f815190506001811080612d725750601081115b15612d8557505f95600295509350505050565b5f5b81811015612e29575f838281518110612da257612da2614a28565b01602001516001600160f81b0319169050600360fc1b8110801590612dd55750603960f81b6001600160f81b0319821611155b158015612e0b5750604160f81b6001600160f81b0319821610801590612e095750602d60f91b6001600160f81b0319821611155b155b15612e2057505f976003975095505050505050565b50600101612d87565b505050600101612d38565b505f835f81518110612e4857612e48614a28565b60200260200101516001855111612e6d5760405180602001604052805f815250612e89565b84600181518110612e8057612e80614a28565b60200260200101515b6002865111612ea65760405180602001604052805f815250612ec2565b85600281518110612eb957612eb9614a28565b60200260200101515b604051602001612ed4939291906153a1565b60408051601f1981840301815291815281516020928301205f818152601390935291205490915060ff1615612f0f57505f9360049350915050565b506001935f9350915050565b33612f2583611c78565b6001600160a01b031614612f4b5760405162461bcd60e51b8152600401610b7590614892565b5f8281526012602052604090205460ff1615612f795760405162461bcd60e51b8152600401610b75906148c9565b5f8281526011602052604090819020600e5491516331a9108f60e11b815260048101849052909133916001600160a01b0390911690636352211e90602401602060405180830381865afa158015612fd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff69190614a68565b6001600160a01b03161461305d5760405162461bcd60e51b815260206004820152602860248201527f43616c6c657220646f6573206e6f74206f776e2074686520776f726420636f6c60448201526737b9103a37b5b2b760c11b6064820152608401610b75565b600e5460405163ea22071760e01b8152600481018490526001600160a01b039091169063ea220717906024015f60405180830381865afa1580156130a3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130ca9190810190614ad0565b60048201906130d99082614937565b5060058101805460ff19166001179055600b8054905f61164283614a50565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205460ff1690565b61312d613254565b6001600160a01b03811661315657604051631e4fbdf760e01b81525f6004820152602401610b75565b61315f81613c0b565b50565b5f81600111611c7357600254821015611c73575f5b505f828152600660205260408120549081900361319e57613197836153e0565b9250613177565b600160e01b161592915050565b805f5260045ffd5b5f6131bd83611c78565b90508180156131d55750336001600160a01b03821614155b156131f8576131e481336130f8565b6131f8576131f86367d9dca160e11b6131ab565b5f8381526008602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050565b5f546001600160a01b031633146112395760405163118cdaa760e01b8152336004820152602401610b75565b5f61328a60025490565b90505f825f8151811061329f5761329f614a28565b602002602001015160018451116132c45760405180602001604052805f8152506132e0565b836001815181106132d7576132d7614a28565b60200260200101515b60028551116132fd5760405180602001604052805f815250613319565b8460028151811061331057613310614a28565b60200260200101515b60405160200161332b939291906153a1565b60408051601f1981840301815282825280516020918201205f8181526013909252828220805460ff1916600117905561012084019092528551919350829186919061337857613378614a28565b6020026020010151815260200160018551116133a25760405180602001604052805f8152506133be565b846001815181106133b5576133b5614a28565b60200260200101515b815260200160028551116133e05760405180602001604052805f8152506133fc565b846002815181106133f3576133f3614a28565b60200260200101515b815260408051808201825260078082526611a3232323232360c91b6020838101919091528085019290925282518084018452908152661198181a99232360c91b81830152828401525f606084018190526080840181905260a08401819052875160c0909401939093528583526011905290208151819061347c9082614937565b50602082015160018201906134919082614937565b50604082015160028201906134a69082614937565b50606082015160038201906134bb9082614937565b50608082015160048201906134d09082614937565b5060a082015160058201805460c085015160e086015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905590910151600690910155505050565b610b41828260405180602001604052805f815250613f26565b5f816001116135c857505f81815260066020526040902054805f036135b657600254821061357657613576636f96cda160e11b6131ab565b5b505f19015f81815260066020526040902054801561357757600160e01b81165f036135a157919050565b6135b1636f96cda160e11b6131ab565b613577565b600160e01b81165f036135c857919050565b611c73636f96cda160e11b6131ab565b5f5b81811015613613575f8051602061572a8339815191526135fa8285614ccb565b60405190815260200160405180910390a16001016135da565b5050505050565b60026001540361363d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f8181526012602052604090205460609060ff16156136ed57600f805461366a9061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546136969061485a565b80156136e15780601f106136b8576101008083540402835291602001916136e1565b820191905f5260205f20905b8154815290600101906020018083116136c457829003601f168201915b50505050509050919050565b5f82815260116020526040808220815161012081019092528054829082906137149061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546137409061485a565b801561378b5780601f106137625761010080835404028352916020019161378b565b820191905f5260205f20905b81548152906001019060200180831161376e57829003601f168201915b505050505081526020016001820180546137a49061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546137d09061485a565b801561381b5780601f106137f25761010080835404028352916020019161381b565b820191905f5260205f20905b8154815290600101906020018083116137fe57829003601f168201915b505050505081526020016002820180546138349061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546138609061485a565b80156138ab5780601f10613882576101008083540402835291602001916138ab565b820191905f5260205f20905b81548152906001019060200180831161388e57829003601f168201915b505050505081526020016003820180546138c49061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546138f09061485a565b801561393b5780601f106139125761010080835404028352916020019161393b565b820191905f5260205f20905b81548152906001019060200180831161391e57829003601f168201915b505050505081526020016004820180546139549061485a565b80601f01602080910402602001604051908101604052809291908181526020018280546139809061485a565b80156139cb5780601f106139a2576101008083540402835291602001916139cb565b820191905f5260205f20905b8154815290600101906020018083116139ae57829003601f168201915b5050509183525050600582015460ff80821615156020808501919091526101008304821615156040808601919091526201000090930490911615156060840152600690930154608090920191909152805191820190525f81528151519192509015801590613a3c5750602082015151155b8015613a4b5750604082015151155b15613a8b5780613a64835f015160328560800151613f81565b604051602001613a759291906153f5565b6040516020818303038152906040529050613bce565b81515115801590613aa057505f826020015151115b8015613aaf5750604082015151155b15613aff5780613ac8835f0151602d8560800151613f81565b604051602001613ad99291906153f5565b604051602081830303815290604052905080613a64836020015160378560800151613f81565b81515115801590613b1457505f826020015151115b8015613b2457505f826040015151115b15613bce5780613b3d835f015160288560800151613f81565b604051602001613b4e9291906153f5565b604051602081830303815290604052905080613b74836020015160328560800151613f81565b604051602001613b859291906153f5565b604051602081830303815290604052905080613bab8360400151603c8560800151613f81565b604051602001613bbc9291906153f5565b60405160208183030381529060405290505b5f8260600151604051602001613be49190615409565b604051602081830303815290604052905080826010604051602001612cfb939291906154ab565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051630a85bd0160e11b81525f906001600160a01b0385169063150b7a0290613c8e903390899088908890600401615532565b6020604051808303815f875af1925050508015613cc8575060408051601f3d908101601f19168201909252613cc591810190615564565b60015b613d1b573d808015613cf5576040519150601f19603f3d011682016040523d82523d5f602084013e613cfa565b606091505b5080515f03613d1357613d136368d2bf6b60e11b6131ab565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60605f613d4583613fb8565b60010190505f816001600160401b03811115613d6357613d63614216565b6040519080825280601f01601f191660200182016040528015613d8d576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613d9757509392505050565b606081515f03613de557505060408051602081019091525f815290565b5f60405180606001604052806040815260200161569e6040913990505f600384516002613e129190614ccb565b613e1c919061557f565b613e2790600461559e565b90505f613e35826020614ccb565b6001600160401b03811115613e4c57613e4c614216565b6040519080825280601f01601f191660200182016040528015613e76576020820181803683370190505b509050818152600183018586518101602084015b81831015613ee2576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101613e8a565b600389510660018114613efc5760028114613f0d57613f18565b613d3d60f01b600119830152613f18565b603d60f81b5f198301525b509398975050505050505050565b613f30838361408f565b6001600160a01b0383163b15611027576002548281035b613f595f868380600101945086613c5a565b613f6d57613f6d6368d2bf6b60e11b6131ab565b818110613f47578160025414613613575f80fd5b6060613f8c83613d39565b8285604051602001613fa0939291906155b5565b60405160208183030381529060405290509392505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613ff65772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614022576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061404057662386f26fc10000830492506010015b6305f5e1008310614058576305f5e100830492506008015b612710831061406c57612710830492506004015b6064831061407e576064830492506002015b600a8310610a665760010192915050565b6002545f8290036140aa576140aa63b562e8dd60e01b6131ab565b5f8181526006602090815260408083206001600160a01b0387164260a01b6001881460e11b1781179091558084526007909252822080546801000000000000000186020190559081900361410757614107622e076360e81b6131ab565b818301825b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a481816001019150810361410c5750600255506110275f8483856135d8565b6001600160e01b03198116811461315f575f80fd5b5f60208284031215614176575f80fd5b813561129381614151565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112936020830184614181565b5f602082840312156141d1575f80fd5b5035919050565b6001600160a01b038116811461315f575f80fd5b5f80604083850312156141fd575f80fd5b8235614208816141d8565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561424c5761424c614216565b60405290565b604051601f8201601f191681016001600160401b038111828210171561427a5761427a614216565b604052919050565b5f6001600160401b0382111561429a5761429a614216565b5060051b60200190565b5f6001600160401b038211156142bc576142bc614216565b50601f01601f191660200190565b5f6142dc6142d7846142a4565b614252565b90508281528383830111156142ef575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112614314575f80fd5b611293838335602085016142ca565b5f82601f830112614332575f80fd5b81356143406142d782614282565b8082825260208201915060208360051b860101925085831115614361575f80fd5b602085015b838110156143a15780356001600160401b03811115614383575f80fd5b614392886020838a0101614305565b84525060209283019201614366565b5095945050505050565b5f80604083850312156143bc575f80fd5b82356143c7816141d8565b915060208301356001600160401b038111156143e1575f80fd5b6143ed85828601614323565b9150509250929050565b801515811461315f575f80fd5b8035611c73816143f7565b5f8060408385031215614420575f80fd5b82356001600160401b03811115614435575f80fd5b8301601f81018513614445575f80fd5b80356144536142d782614282565b8082825260208201915060208360051b850101925087831115614474575f80fd5b6020840193505b8284101561449f57833561448e816141d8565b82526020938401939091019061447b565b94506144b19250505060208401614404565b90509250929050565b5f805f606084860312156144cc575f80fd5b83356144d7816141d8565b925060208401356144e7816141d8565b929592945050506040919091013590565b5f60208284031215614508575f80fd5b8135611293816141d8565b5f60208284031215614523575f80fd5b81356001600160401b03811115614538575f80fd5b613d3184828501614323565b5f8060408385031215614555575f80fd5b50508035926020909101359150565b5f60208284031215614574575f80fd5b81356001600160401b03811115614589575f80fd5b613d3184828501614305565b5f80604083850312156145a6575f80fd5b82356145b1816141d8565b915060208301356145c1816143f7565b809150509250929050565b5f805f606084860312156145de575f80fd5b505081359360208301359350604090920135919050565b602081525f82516101206020840152614612610140840182614181565b90506020840151601f1984830301604085015261462f8282614181565b9150506040840151601f1984830301606085015261464d8282614181565b9150506060840151601f1984830301608085015261466b8282614181565b9150506080840151601f198483030160a08501526146898282614181565b91505060a084015161469f60c085018215159052565b5060c084015180151560e08501525060e0840151801515610100850152506101008401516101208401528091505092915050565b61012081525f6146e761012083018c614181565b82810360208401526146f9818c614181565b9050828103604084015261470d818b614181565b90508281036060840152614721818a614181565b905082810360808401526147358189614181565b96151560a0840152505092151560c084015290151560e08301526101009091015295945050505050565b5f805f8060808587031215614772575f80fd5b843561477d816141d8565b9350602085013561478d816141d8565b92506040850135915060608501356001600160401b038111156147ae575f80fd5b8501601f810187136147be575f80fd5b6147cd878235602084016142ca565b91505092959194509250565b5f80604083850312156147ea575f80fd5b8235915060208301356145c1816143f7565b8215158152604081016005831061482157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f806040838503121561483f575f80fd5b823561484a816141d8565b915060208301356145c1816141d8565b600181811c9082168061486e57607f821691505b60208210810361488c57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b60208082526010908201526f151bdad95b881a5cc8189b1bd8dad95960821b604082015260600190565b601f82111561102757805f5260205f20601f840160051c810160208510156149185750805b601f840160051c820191505b81811015613613575f8155600101614924565b81516001600160401b0381111561495057614950614216565b6149648161495e845461485a565b846148f3565b6020601f821160018114614996575f831561497f5750848201515b5f19600385901b1c1916600184901b178455613613565b5f84815260208120601f198516915b828110156149c557878501518255602094850194600190920191016149a5565b50848210156149e257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60208082526018908201527f576f726420766572696669636174696f6e206661696c65640000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201614a6157614a61614a3c565b5060010190565b5f60208284031215614a78575f80fd5b8151611293816141d8565b5f82601f830112614a92575f80fd5b8151614aa06142d7826142a4565b818152846020838601011115614ab4575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215614ae0575f80fd5b81516001600160401b03811115614af5575f80fd5b613d3184828501614a83565b5f8154614b0d8161485a565b808552600182168015614b275760018114614b4357614b77565b60ff1983166020870152602082151560051b8701019350614b77565b845f5260205f205f5b83811015614b6e5781546020828a010152600182019150602081019050614b4c565b87016020019450505b50505092915050565b604081525f614b926040830185614b01565b8281036020840152614ba48185614b01565b95945050505050565b5f60208284031215614bbd575f80fd5b81516001600160401b03811115614bd2575f80fd5b820160808185031215614be3575f80fd5b614beb61422a565b815181526020820151614bfd816143f7565b60208201526040828101519082015260608201516001600160401b03811115614c24575f80fd5b80830192505084601f830112614c38575f80fd5b8151614c466142d782614282565b8082825260208201915060208360051b860101925087831115614c67575f80fd5b602085015b83811015614ca75780516001600160401b03811115614c89575f80fd5b614c988a6020838a0101614a83565b84525060209283019201614c6c565b506060840152509095945050505050565b81810381811115610a6657610a66614a3c565b80820180821115610a6657610a66614a3c565b5f81518060208401855e5f93019283525090919050565b5f614d008285614cde565b7f7b2274726169745f74797065223a22576f7264202331222c2276616c7565223a8152601160f91b6020820152614d3a6021820185614cde565b61227d60f01b815260020195945050505050565b5f614d598285614cde565b7f2c7b2274726169745f74797065223a22576f7264202332222c2276616c7565228152611d1160f11b6020820152614d3a6022820185614cde565b5f614d9f8285614cde565b7f2c7b2274726169745f74797065223a22576f7264202333222c2276616c7565228152611d1160f11b6020820152614d3a6022820185614cde565b5f614de58285614cde565b7f2c7b2274726169745f74797065223a22576f726420436f756e74222c2276616c8152643ab2911d1160d91b6020820152614d3a6025820185614cde565b5f614e2e8284614cde565b7f2c7b2274726169745f74797065223a2246756c6c7920436f6c6f726564222c2281526c76616c7565223a22596573227d60981b6020820152602d019392505050565b5f614e7c8284614cde565b7f2c7b2274726169745f74797065223a2246756c6c7920436f6c6f726564222c2281526b76616c7565223a224e6f227d60a01b6020820152602c019392505050565b5f614ec98285614cde565b7f2c7b2274726169745f74797065223a224261636b67726f756e6420484558222c815268113b30b63ab2911d1160b91b6020820152614d3a6029820185614cde565b5f614f168285614cde565b7f2c7b2274726169745f74797065223a224261636b67726f756e6420436f6c6f7281526f102730b6b29116113b30b63ab2911d1160811b6020820152614d3a6030820185614cde565b5f614f6a8284614cde565b7f2c7b2274726169745f74797065223a224261636b67726f756e6420484558222c81527f2276616c7565223a2244656661756c7420426c7565227d00000000000000000060208201526037019392505050565b5f614fc88284614cde565b7f2c7b2274726169745f74797065223a224261636b67726f756e6420484558222c81527f2276616c7565223a2244656661756c74205768697465227d000000000000000060208201526038019392505050565b5f6150268285614cde565b7f2c7b2274726169745f74797065223a22576f726420484558222c2276616c7565815262111d1160e91b6020820152614d3a6023820185614cde565b5f61506d8285614cde565b7f2c7b2274726169745f74797065223a22576f726420436f6c6f72204e616d652281526916113b30b63ab2911d1160b11b6020820152614d3a602a820185614cde565b5f6150bb8284614cde565b7f2c7b2274726169745f74797065223a22576f726420484558222c2276616c7565815271223a2244656661756c74205768697465227d60701b60208201526032019392505050565b5f61510e8284614cde565b7f2c7b2274726169745f74797065223a22576f726420484558222c2276616c7565815270223a2244656661756c7420426c7565227d60781b60208201526031019392505050565b5f6151608284614cde565b7f2c7b2274726169745f74797065223a225374616b6564222c2276616c7565223a81526522596573227d60d01b60208201526026019392505050565b5f6151a78284614cde565b605d60f81b81526001019392505050565b747b226e616d65223a202242617365576f726473202360581b81525f6151e16015830186614cde565b7f222c20226465736372697074696f6e223a20224261736520576f72647320617281527f6520746865206275696c64696e6720626c6f636b7320666f7220616e20696e6660208201527f696e697465206f6e636861696e2061727420616e642073746f727974656c6c6960408201527f6e67206578706572696d656e742e204d696e7420756e6971756520776f72647360608201527f206f6e20626173652e2041646420796f757220756e697175652062617365206360808201527f6f6c6f72732e204275696c642061206c69627261727920616e64206265636f6d60a08201527f652070617274206f66207468652065766f6c76696e67206d65746173746f727960c08201527f2e222c2022696d616765223a2022646174613a696d6167652f7376672b786d6c60e0820152670ed8985cd94d8d0b60c21b61010082015261532e610108820186614cde565b7001116101130ba3a3934b13aba32b9911d1607d1b81529050601181016153656153588287614cde565b607d60f81b815260010190565b979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f611293601d830184614cde565b5f6153ac8286614cde565b601f60fa1b81526153c06001820186614cde565b9050601f60fa1b81526153d66001820185614cde565b9695505050505050565b5f816153ee576153ee614a3c565b505f190190565b5f613d316154038386614cde565b84614cde565b7f3c7376672077696474683d2236303022206865696768743d223630302220786d81527f6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f7376672260208201527f3e3c726563742077696474683d223130302522206865696768743d223130302560408201526711103334b6361e9160c11b60608201525f6154976068830184614cde565b631110179f60e11b81526004019392505050565b5f6154bf6154b98387614cde565b85614cde565b5f84546154cb8161485a565b6001821680156154e257600181146154f757615524565b60ff1983168552811515820285019350615524565b875f5260205f205f5b8381101561551c57815487820152600190910190602001615500565b505081850193505b509198975050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906153d690830184614181565b5f60208284031215615574575f80fd5b815161129381614151565b5f8261559957634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610a6657610a66614a3c565b701e3a32bc3a103c1e911a981291103c9e9160791b81525f6155da6011830186614cde565b7f252220666f6e742d66616d696c793d2248656c7665746963612c2073616e732d81527f73657269662220666f6e742d7765696768743d223630302220666f6e742d736960208201526d3d329e911a1b11103334b6361e9160911b6040820152615647604e820186614cde565b90507f2220746578742d616e63686f723d226d6964646c65222064793d222e33656d228152601f60f91b60208201526156836021820185614cde565b661e17ba32bc3a1f60c91b8152600701969550505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f5b7b2274726169745f74797065223a22426c6f636b6564222c2276616c7565223a2274727565227d5d2274726169745f74797065223a22436f6c6f72204e616d65222c2276616c7565223a22f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7a2646970667358221220fc785f1a56eed69dd0cbc9e81531fbf901c31b9647bb20a3970f32479265e94864736f6c634300081a00333c7376672077696474683d2236303022206865696768743d223630302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d222346464646464622202f3e3c7465787420783d223530252220793d223530252220666f6e742d66616d696c793d2248656c7665746963612c2073616e732d73657269662220666f6e742d7765696768743d223630302220666f6e742d73697a653d223436222066696c6c3d22233030303030302220746578742d616e63686f723d226d6964646c65222064793d222e33656d223ee29b943c2f746578743e3c2f7376673e