UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines 73.4 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default={_format:"hh-sol-artifact-1",contractName:"MarketPlace",sourceName:"contracts/mojito/sothebys/MarketPlace.sol",abi:[{inputs:[{internalType:"address",name:"_nftAddress",type:"address"},{internalType:"address",name:"_wrappedNativeToken",type:"address"},{internalType:"address",name:"_marketplaceAddress",type:"address"},{internalType:"uint256",name:"_platformFeePercentage",type:"uint256"},{internalType:"address",name:"_priceFeedAddress",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"uuid",type:"string"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenContract",type:"address"},{indexed:!1,internalType:"uint256",name:"quantity",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenOwner",type:"address"},{indexed:!1,internalType:"address",name:"highestBidder",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tax",type:"uint256"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"},{indexed:!1,internalType:"address",name:"marketplaceAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"platformFee",type:"uint256"},{components:[{internalType:"address",name:"bidder",type:"address"},{internalType:"uint256",name:"quotePrice",type:"uint256"},{internalType:"address",name:"paymentAddress",type:"address"}],indexed:!1,internalType:"struct MarketPlace.BidHistory[]",name:"bidderlist",type:"tuple[]"}],name:"AuctionClosed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"uuid",type:"string"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenContract",type:"address"},{indexed:!1,internalType:"uint256",name:"quantity",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenOwner",type:"address"},{indexed:!1,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tax",type:"uint256"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"},{indexed:!1,internalType:"address",name:"marketplaceAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"platformFee",type:"uint256"}],name:"BuyExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"tokenContract",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RoyaltyPayout",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"uuid",type:"string"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenContract",type:"address"},{indexed:!1,internalType:"uint256",name:"quantity",type:"uint256"},{indexed:!0,internalType:"address",name:"tokenOwner",type:"address"},{indexed:!1,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"tax",type:"uint256"},{indexed:!1,internalType:"address",name:"paymentToken",type:"address"},{indexed:!1,internalType:"address",name:"marketplaceAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"platformFee",type:"uint256"}],name:"SaleExecuted",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{components:[{internalType:"string",name:"uuid",type:"string"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"tokenContract",type:"address"},{internalType:"uint256",name:"quantity",type:"uint256"},{internalType:"address payable",name:"tokenOwner",type:"address"},{internalType:"uint256",name:"fixedPrice",type:"uint256"},{internalType:"address",name:"paymentToken",type:"address"},{internalType:"uint256",name:"tax",type:"uint256"},{internalType:"address",name:"whitelistedBuyer",type:"address"},{internalType:"uint256",name:"quotePrice",type:"uint256"},{internalType:"uint256",name:"slippage",type:"uint256"},{internalType:"address",name:"buyer",type:"address"}],internalType:"struct MarketPlace.Order",name:"order",type:"tuple"},{internalType:"bytes",name:"sellerSignature",type:"bytes"},{internalType:"address",name:"currencyToken",type:"address"}],name:"buy",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"string",name:"uuid",type:"string"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"tokenContract",type:"address"},{internalType:"uint256",name:"quantity",type:"uint256"},{internalType:"address payable",name:"tokenOwner",type:"address"},{internalType:"uint256",name:"fixedPrice",type:"uint256"},{internalType:"address",name:"paymentToken",type:"address"},{internalType:"uint256",name:"tax",type:"uint256"},{internalType:"address",name:"whitelistedBuyer",type:"address"},{internalType:"uint256",name:"quotePrice",type:"uint256"},{internalType:"uint256",name:"slippage",type:"uint256"},{internalType:"address",name:"buyer",type:"address"}],internalType:"struct MarketPlace.Order",name:"order",type:"tuple"},{internalType:"bytes",name:"sellerSignature",type:"bytes"},{internalType:"bytes",name:"buyerSignature",type:"bytes"},{internalType:"address",name:"currencyToken",type:"address"},{components:[{internalType:"address",name:"bidder",type:"address"},{internalType:"uint256",name:"quotePrice",type:"uint256"},{internalType:"address",name:"paymentAddress",type:"address"}],internalType:"struct MarketPlace.BidHistory[]",name:"bidHistory",type:"tuple[]"}],name:"executeAuction",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"tokenContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"getRoyaltyInfo",outputs:[{internalType:"address payable[]",name:"recipients",type:"address[]"},{internalType:"uint256[]",name:"bps",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketplaceAddress",outputs:[{internalType:"address payable",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"nftAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"platformFeePercentage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"priceFeedAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"string",name:"uuid",type:"string"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"tokenContract",type:"address"},{internalType:"uint256",name:"quantity",type:"uint256"},{internalType:"address payable",name:"tokenOwner",type:"address"},{internalType:"uint256",name:"fixedPrice",type:"uint256"},{internalType:"address",name:"paymentToken",type:"address"},{internalType:"uint256",name:"tax",type:"uint256"},{internalType:"address",name:"whitelistedBuyer",type:"address"},{internalType:"uint256",name:"quotePrice",type:"uint256"},{internalType:"uint256",name:"slippage",type:"uint256"},{internalType:"address",name:"buyer",type:"address"}],internalType:"struct MarketPlace.Order",name:"order",type:"tuple"},{internalType:"bytes",name:"buyerSignature",type:"bytes"},{internalType:"uint256",name:"expirationTime",type:"uint256"},{internalType:"address",name:"currencyToken",type:"address"}],name:"sell",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wrappedNativeToken",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],bytecode:"0x60806040523480156200001157600080fd5b5060405162004137380380620041378339810160408190526200003491620002c6565b60016000556040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038616906301ffc9a79060240160206040518083038186803b1580156200008057600080fd5b505afa15801562000095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000bb91906200032d565b806200014457506040516301ffc9a760e01b8152636cdb3d1360e11b60048201526001600160a01b038616906301ffc9a79060240160206040518083038186803b1580156200010957600080fd5b505afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014491906200032d565b620001965760405162461bcd60e51b815260206004820152601d60248201527f446f65736e277420737570706f7274204e465420696e7465726661636500000060448201526064015b60405180910390fd5b6001600160a01b038316620001ee5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964204d61726b6574706c6163652041646472657373000000000060448201526064016200018d565b6001600160a01b038116620002465760405162461bcd60e51b815260206004820152601960248201527f496e76616c69642050726963654665656420416464726573730000000000000060448201526064016200018d565b600280546001600160a01b03199081166001600160a01b0397881617909155600380548216958716959095179094556004805485169386169390931790925560055560068054831691909316179091556001805433921691909117905562000358565b80516001600160a01b0381168114620002c157600080fd5b919050565b600080600080600060a08688031215620002df57600080fd5b620002ea86620002a9565b9450620002fa60208701620002a9565b93506200030a60408701620002a9565b9250606086015191506200032160808701620002a9565b90509295509295909350565b6000602082840312156200034057600080fd5b815180151581146200035157600080fd5b9392505050565b613dcf80620003686000396000f3fe60806040526004361061009a5760003560e01c80635bf8633a116100615780635bf8633a146101425780638da5cb5b14610162578063cd70505514610182578063cdd78cfc14610195578063daa17f49146101b9578063e0abca0b146101d957005b806313b3f558146100a357806317fcb39b146100b657806336de9742146100ec5780633ccfd60b1461011a578063526a57251461012f57005b366100a157005b005b6100a16100b136600461347f565b6101f9565b3480156100c257600080fd5b506003546100d6906001600160a01b031681565b6040516100e391906135bb565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004613157565b610a5a565b6040516100e3929190613602565b34801561012657600080fd5b506100a1610f29565b6100a161013d3660046132af565b610fec565b34801561014e57600080fd5b506002546100d6906001600160a01b031681565b34801561016e57600080fd5b506001546100d6906001600160a01b031681565b6100a1610190366004613326565b611703565b3480156101a157600080fd5b506101ab60055481565b6040519081526020016100e3565b3480156101c557600080fd5b506004546100d6906001600160a01b031681565b3480156101e557600080fd5b506006546100d6906001600160a01b031681565b600260005414156102255760405162461bcd60e51b815260040161021c9061398f565b60405180910390fd5b600260005560408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a790610263906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190613257565b80610342575060408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906102f290636cdb3d1360e11b90600401613679565b60206040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103429190613257565b61035e5760405162461bcd60e51b815260040161021c90613837565b60408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a79061039790636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156103af57600080fd5b505afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613257565b156104df57600084604001516001600160a01b031662fdd58e3387602001516040518363ffffffff1660e01b81526004016104239291906135cf565b60206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047391906134fe565b90508085606001511115801561048d575060008560600151115b6104d95760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000604482015260640161021c565b5061053b565b60808401516001600160a01b0316331461053b5760405162461bcd60e51b815260206004820181905260248201527f6d73672e73656e6465722073686f756c6420626520746f6b656e206f776e6572604482015260640161021c565b4282101561057f5760405162461bcd60e51b81526020600482015260116024820152701bd999995c881a185cc8195e1c1a5c9959607a1b604482015260640161021c565b60035460c08501516001600160a01b039081169116146105b15760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b03828116911614806105d457506001600160a01b038116155b6105f05760405162461bcd60e51b815260040161021c906139c6565b60035460c08501516001600160a01b03908116911614801561061f57506003546001600160a01b038281169116145b8061063c575060035460c08501516001600160a01b039081169116145b156107b3578360e001518460a001516106559190613ae7565b60c08501516101608601516040516370a0823160e01b81526001600160a01b03909216916370a082319161068b916004016135bb565b60206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db91906134fe565b10156106f95760405162461bcd60e51b815260040161021c9061380a565b8360e001518460a0015161070d9190613ae7565b60c0850151610160860151604051636eb1769f60e11b81526001600160a01b039092169163dd62ed3e916107459130906004016135e8565b60206040518083038186803b15801561075d57600080fd5b505afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079591906134fe565b10156107b35760405162461bcd60e51b815260040161021c90613958565b6101008401516001600160a01b031615806107e957508361016001516001600160a01b03168461010001516001600160a01b0316145b6108055760405162461bcd60e51b815260040161021c90613894565b6108158484866101600151611e72565b6108315760405162461bcd60e51b815260040161021c906137ae565b835160405160079161084291613543565b9081526040519081900360200190205460ff16156108725760405162461bcd60e51b815260040161021c906137df565b6001600785600001516040516108889190613543565b908152604051908190036020019020805491151560ff19909216919091179055610120840151156108cd576108cd8460a0015185610120015183876101400151611f38565b60a08401516004546001600160a01b0316158015906108f0575060008560e00151115b1561091e5761016085015160045460e087015160c088015161091e93926001600160a01b03169186916120ad565b6004546000906001600160a01b03161580159061093d57506000600554115b15610995576064600554836109529190613cb4565b61095c9190613b2d565b90506109688183613cd3565b9150610995866101600151600460009054906101000a90046001600160a01b031685848a60c001516120ad565b6109b48660400151876020015184868a61016001518b60c00151612330565b91506109cc8661016001513385858a60c001516120ad565b6109d586612483565b6040808701516020880151885160608a01516101608b015160a08c015160e08d0151600454975133986001600160a01b03988916987fd5ecea71962fa1e78a663464eb59cb2b617905def1b3ec201d773fedc528221a97610a4597909690959094909390928f9216908d906136a1565b60405180910390a45050600160005550505050565b6040516301ffc9a760e01b815260609081906001600160a01b038616906301ffc9a790610a9290635d9dd7eb60e11b90600401613679565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613257565b15610b6e57604051635d9dd7eb60e11b8152600481018590526001600160a01b0386169063bb3bafd6906024015b60006040518083038186803b158015610b2857600080fd5b505afa158015610b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b6491908101906131c0565b9092509050610f21565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610ba190632dde656160e21b90600401613679565b60206040518083038186803b158015610bb957600080fd5b505afa158015610bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf19190613257565b15610cf85760405163b9c4d9fb60e01b8152600481018590526001600160a01b0386169063b9c4d9fb9060240160006040518083038186803b158015610c3657600080fd5b505afa158015610c4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c72919081019061318c565b604051630ebd4c7f60e01b8152600481018690529092506001600160a01b03861690630ebd4c7f9060240160006040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf19190810190613223565b9050610f21565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610d2b906335681b5360e21b90600401613679565b60206040518083038186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190613257565b15610dad576040516335681b5360e21b8152600481018590526001600160a01b0386169063d5a06d4c90602401610b10565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610de09063152a902d60e11b90600401613679565b60206040518083038186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190613257565b15610f215760405163152a902d60e11b8152600481018590526024810184905260009081906001600160a01b03881690632a55205a90604401604080518083038186803b158015610e8057600080fd5b505afa158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190613129565b915091508184600081518110610ed057610ed0613d58565b6001600160a01b039092166020928302919091019091015284610ef582612710613cb4565b610eff9190613b2d565b83600081518110610f1257610f12613d58565b60200260200101818152505050505b935093915050565b6001546001600160a01b03163314610f4057600080fd5b604080516000808252602082019283905291339182914791610f6191613543565b60006040518083038185875af1925050503d8060008114610f9e576040519150601f19603f3d011682016040523d82523d6000602084013e610fa3565b606091505b50508092505081610fe85760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161021c565b5050565b6002600054141561100f5760405162461bcd60e51b815260040161021c9061398f565b600260005560408084015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a79061104d906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561106557600080fd5b505afa158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613257565b8061112c575060408084015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906110dc90636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190613257565b6111485760405162461bcd60e51b815260040161021c90613837565b6101608301516001600160a01b031633146111a55760405162461bcd60e51b815260206004820152601e60248201527f6d73672e73656e6465722073686f756c64206265207468652062757965720000604482015260640161021c565b6101008301516001600160a01b031615806111cd57506101008301516001600160a01b031633145b6111e95760405162461bcd60e51b815260040161021c90613894565b60035460c08401516001600160a01b0390811691161480611215575060c08301516001600160a01b0316155b6112315760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b038281169116148061125457506001600160a01b038116155b6112705760405162461bcd60e51b815260040161021c906139c6565b60c08301516001600160a01b031615801561129257506001600160a01b038116155b806112a457506001600160a01b038116155b156112e1578260e001518360a001516112bd9190613ae7565b3410156112dc5760405162461bcd60e51b815260040161021c9061380a565b611495565b60035460c08401516001600160a01b03908116911614801561131057506003546001600160a01b038281169116145b8061132857506003546001600160a01b038281169116145b15611495578260e001518360a001516113419190613ae7565b6101608401516040516370a0823160e01b81526001600160a01b038416916370a082319161137291906004016135bb565b60206040518083038186803b15801561138a57600080fd5b505afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c291906134fe565b10156113e05760405162461bcd60e51b815260040161021c9061380a565b8260e001518360a001516113f49190613ae7565b610160840151604051636eb1769f60e11b81526001600160a01b0384169163dd62ed3e91611427919030906004016135e8565b60206040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147791906134fe565b10156114955760405162461bcd60e51b815260040161021c90613958565b6114a483838560800151611e72565b6114c05760405162461bcd60e51b815260040161021c90613926565b82516040516007916114d191613543565b9081526040519081900360200190205460ff16156115015760405162461bcd60e51b815260040161021c906137df565b6001600784600001516040516115179190613543565b908152604051908190036020019020805491151560ff199092169190911790556101208301511561155c5761155c8360a0015184610120015183866101400151611f38565b60a08301516004546001600160a01b03161580159061157f575060008460e00151115b156115ad5761016084015160045460c086015160e08701516115ad93926001600160a01b03169190866120ad565b6004546000906001600160a01b0316158015906115cc57506000600554115b1561161f576064600554836115e19190613cb4565b6115eb9190613b2d565b90506115f78183613cd3565b61016086015160045460c088015192945061161f926001600160a01b039091169084876120ad565b61163e85604001518660200151848860c0015189610160015188612330565b915061165a85610160015186608001518760c0015185876120ad565b61166385612483565b84608001516001600160a01b031685604001516001600160a01b031686602001517fd1787f9e7db09f026ae23bda01cb702ad3b51548917fd19e17a15caa0970ea4c886000015189606001518a61016001518b60a001518c60e001518d60c00151600460009054906101000a90046001600160a01b03168b6040516116ef9897969594939291906136a1565b60405180910390a450506001600055505050565b600260005414156117265760405162461bcd60e51b815260040161021c9061398f565b600260005560408086015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a790611764906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561177c57600080fd5b505afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b49190613257565b80611843575060408086015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906117f390636cdb3d1360e11b90600401613679565b60206040518083038186803b15801561180b57600080fd5b505afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190613257565b61185f5760405162461bcd60e51b815260040161021c90613837565b6101608501516001600160a01b031633148061188557506004546001600160a01b031633145b6118e85760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79204275796572206f72207468652041646d696e2063616e2063616c6c60448201526d103a3434b990333ab731ba34b7b760911b606482015260840161021c565b6101008501516001600160a01b0316158061191057506101008501516001600160a01b031633145b61192c5760405162461bcd60e51b815260040161021c90613894565b60035460c08601516001600160a01b0390811691161480611958575060c08501516001600160a01b0316155b6119745760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b038381169116148061199757506001600160a01b038216155b6119b35760405162461bcd60e51b815260040161021c906139c6565b60c08501516001600160a01b03161580156119d557506001600160a01b038216155b806119e757506001600160a01b038216155b15611a24578460e001518560a00151611a009190613ae7565b341015611a1f5760405162461bcd60e51b815260040161021c9061380a565b611bd8565b60035460c08601516001600160a01b039081169116148015611a5357506003546001600160a01b038381169116145b80611a6b57506003546001600160a01b038381169116145b15611bd8578460e001518560a00151611a849190613ae7565b6101608601516040516370a0823160e01b81526001600160a01b038516916370a0823191611ab591906004016135bb565b60206040518083038186803b158015611acd57600080fd5b505afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0591906134fe565b1015611b235760405162461bcd60e51b815260040161021c9061380a565b8460e001518560a00151611b379190613ae7565b610160860151604051636eb1769f60e11b81526001600160a01b0385169163dd62ed3e91611b6a919030906004016135e8565b60206040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906134fe565b1015611bd85760405162461bcd60e51b815260040161021c90613958565b611be785858760800151611e72565b611c035760405162461bcd60e51b815260040161021c90613926565b611c138584876101600151611e72565b611c2f5760405162461bcd60e51b815260040161021c906137ae565b8451604051600791611c4091613543565b9081526040519081900360200190205460ff1615611c705760405162461bcd60e51b815260040161021c906137df565b600160078660000151604051611c869190613543565b908152604051908190036020019020805491151560ff1990921691909117905561012085015115611ccb57611ccb8560a0015186610120015184886101400151611f38565b60a08501516004546001600160a01b031615801590611cee575060008660e00151115b15611d1c5761016086015160045460c088015160e0890151611d1c93926001600160a01b03169190876120ad565b6004546000906001600160a01b031615801590611d3b57506000600554115b15611d8e57606460055483611d509190613cb4565b611d5a9190613b2d565b9050611d668183613cd3565b61016088015160045460c08a0151929450611d8e926001600160a01b039091169084886120ad565b611dad87604001518860200151848a60c001518b610160015189612330565b9150611dc987610160015188608001518960c0015185886120ad565b611dd287612483565b86608001516001600160a01b031687604001516001600160a01b031688602001517f4618206cb49a2f19c42c02ca7be3762babd6940e867e343ca82380c1f0251f388a600001518b606001518c61016001518d60a001518e60e001518c600460009054906101000a90046001600160a01b03168b8e604051611e5c999897969594939291906136f8565b60405180910390a4505060016000555050505050565b6000816001600160a01b0316611f2484611f1e8760000151886020015189604001518a606001518b608001518c60a001518d60c00151604051602001611ebe979695949392919061355f565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b90612894565b6001600160a01b03161490505b9392505050565b6006546040516302c68be360e31b815260009182916001600160a01b03909116906316345f1890611f6d9087906004016135bb565b6040805180830381600087803b158015611f8657600080fd5b505af1158015611f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbe9190613279565b9092509050670de0b6b3a7640000611fd782600a613b84565b611fe19190613c2f565b611feb8784613c2f565b611ff59190613aff565b60648461200a670de0b6b3a764000089613aff565b6120149190613c2f565b61201e9190613aff565b612030670de0b6b3a764000088613aff565b61203a9190613aa6565b12156120a55760405162461bcd60e51b815260206004820152603460248201527f71756f74655072696365207769746820736c697070616765206973206c657373604482015273207468616e20746865206669786564507269636560601b606482015260840161021c565b505050505050565b60006001600160a01b0384161580156120cd57506001600160a01b038216155b156121a7576001600160a01b0385168360005b6040519080825280601f01601f19166020018201604052801561210a576020820181803683370190505b506040516121189190613543565b60006040518083038185875af1925050503d8060008114612155576040519150601f19603f3d011682016040523d82523d6000602084013e61215a565b606091505b505080915050806121a25760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd858dd1a5bdb8819985a5b195960721b604482015260640161021c565b6120a5565b6003546001600160a01b0385811691161480156121cb57506001600160a01b038216155b1561224f57600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561222057600080fd5b505af1158015612234573d6000803e3d6000fd5b506121a2935050506001600160a01b038616905086856128ba565b6001600160a01b03841615801561227357506003546001600160a01b038381169116145b1561230157600354612290906001600160a01b0316873086612915565b600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156122d657600080fd5b505af11580156122ea573d6000803e3d6000fd5b5050506001600160a01b03861690508360006120e0565b816001600160a01b0316846001600160a01b031614156120a5576120a56001600160a01b038516878786612915565b6000848180806123418b8b86610a5a565b815191935091508061235a578995505050505050612479565b60005b8181101561247057600084828151811061237957612379613d58565b602002602001015190506127108c85848151811061239957612399613d58565b60200260200101516123ab9190613cb4565b6123b59190613b2d565b9550858710156123f35760405162461bcd60e51b81526020600482015260096024820152681a5b9cdbdb1d995b9d60ba1b604482015260640161021c565b6124008a828d898d6120ad565b7f866e6ef8682ddf5f1025e64dfdb45527077f7be70fa9ef680b7ffd8cf4ab9c508e8e838960405161245a94939291906001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b60405180910390a150948490039460010161235d565b50939450505050505b9695505050505050565b60408082015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906124bc906380ac58cd60e01b90600401613679565b60206040518083038186803b1580156124d457600080fd5b505afa1580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c9190613257565b156126745780608001516001600160a01b031681604001516001600160a01b0316636352211e83602001516040518263ffffffff1660e01b815260040161255591815260200190565b60206040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a5919061310c565b6001600160a01b0316146125f45760405162461bcd60e51b815260206004820152601660248201527536b0b5b2b91034b9903737ba103a34329037bbb732b960511b604482015260640161021c565b604080820151608083015161016084015160208501519351632142170760e11b81526001600160a01b0392831660048201529082166024820152604481019390935216906342842e0e90606401600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b505050505b60408082015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906126ad90636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156126c557600080fd5b505afa1580156126d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fd9190613257565b1561289157600081604001516001600160a01b031662fdd58e836080015184602001516040518363ffffffff1660e01b815260040161273d9291906135cf565b60206040518083038186803b15801561275557600080fd5b505afa158015612769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278d91906134fe565b9050808260600151111580156127a7575060008260600151115b6127f35760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696365696e7420746f6b656e2062616c616e6365000000000000604482015260640161021c565b6040808301516080840151610160850151602086015160608701519451637921219560e11b81526001600160a01b03938416600482015291831660248301526044820152606481019390935260a06084840152600260a484015261060f60f31b60c4840152169063f242432a9060e401600060405180830381600087803b15801561287d57600080fd5b505af11580156120a5573d6000803e3d6000fd5b50565b60008060006128a38585612953565b915091506128b0816129c3565b5090505b92915050565b6129108363a9059cbb60e01b84846040516024016128d99291906135cf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612b79565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261294d9085906323b872dd60e01b906084016128d9565b50505050565b60008082516041141561298a5760208301516040840151606085015160001a61297e87828585612c4b565b945094505050506129bc565b8251604014156129b457602083015160408401516129a9868383612d2e565b9350935050506129bc565b506000905060025b9250929050565b60008160048111156129d7576129d7613d42565b14156129e05750565b60018160048111156129f4576129f4613d42565b1415612a3d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161021c565b6002816004811115612a5157612a51613d42565b1415612a9f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161021c565b6003816004811115612ab357612ab3613d42565b1415612b0c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161021c565b6004816004811115612b2057612b20613d42565b14156128915760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161021c565b6000612bce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d5d9092919063ffffffff16565b8051909150156129105780806020019051810190612bec9190613257565b6129105760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161021c565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612c785750600090506003612d25565b8460ff16601b14158015612c9057508460ff16601c14155b15612ca15750600090506004612d25565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612cf5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612d1e57600060019250925050612d25565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01612d4f87828885612c4b565b935093505050935093915050565b6060612d6c8484600085612d74565b949350505050565b606082471015612dd55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161021c565b843b612e235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161021c565b600080866001600160a01b03168587604051612e3f9190613543565b60006040518083038185875af1925050503d8060008114612e7c576040519150601f19603f3d011682016040523d82523d6000602084013e612e81565b606091505b5091509150612e91828286612e9c565b979650505050505050565b60608315612eab575081611f31565b825115612ebb5782518084602001fd5b8160405162461bcd60e51b815260040161021c919061368e565b8035612ee081613d84565b919050565b600082601f830112612ef657600080fd5b81516020612f0b612f0683613a83565b613a53565b80838252828201915082860187848660051b8901011115612f2b57600080fd5b60005b85811015612f53578151612f4181613d84565b84529284019290840190600101612f2e565b5090979650505050505050565b600082601f830112612f7157600080fd5b81516020612f81612f0683613a83565b80838252828201915082860187848660051b8901011115612fa157600080fd5b60005b85811015612f5357815184529284019290840190600101612fa4565b600082601f830112612fd157600080fd5b81356001600160401b03811115612fea57612fea613d6e565b612ffd601f8201601f1916602001613a53565b81815284602083860101111561301257600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180828403121561304257600080fd5b61304a613a30565b905081356001600160401b0381111561306257600080fd5b61306e84828501612fc0565b8252506020820135602082015261308760408301612ed5565b6040820152606082013560608201526130a260808301612ed5565b608082015260a082013560a08201526130bd60c08301612ed5565b60c082015260e082013560e08201526101006130da818401612ed5565b9082015261012082810135908201526101408083013590820152610160613102818401612ed5565b9082015292915050565b60006020828403121561311e57600080fd5b8151611f3181613d84565b6000806040838503121561313c57600080fd5b825161314781613d84565b6020939093015192949293505050565b60008060006060848603121561316c57600080fd5b833561317781613d84565b95602085013595506040909401359392505050565b60006020828403121561319e57600080fd5b81516001600160401b038111156131b457600080fd5b612d6c84828501612ee5565b600080604083850312156131d357600080fd5b82516001600160401b03808211156131ea57600080fd5b6131f686838701612ee5565b9350602085015191508082111561320c57600080fd5b5061321985828601612f60565b9150509250929050565b60006020828403121561323557600080fd5b81516001600160401b0381111561324b57600080fd5b612d6c84828501612f60565b60006020828403121561326957600080fd5b81518015158114611f3157600080fd5b6000806040838503121561328c57600080fd5b82519150602083015160ff811681146132a457600080fd5b809150509250929050565b6000806000606084860312156132c457600080fd5b83356001600160401b03808211156132db57600080fd5b6132e78783880161302f565b945060208601359150808211156132fd57600080fd5b5061330a86828701612fc0565b925050604084013561331b81613d84565b809150509250925092565b600080600080600060a0868803121561333e57600080fd5b85356001600160401b038082111561335557600080fd5b61336189838a0161302f565b965060209150818801358181111561337857600080fd5b6133848a828b01612fc0565b96505060408801358181111561339957600080fd5b6133a58a828b01612fc0565b95505060608801356133b681613d84565b93506080880135818111156133ca57600080fd5b88019050601f810189136133dd57600080fd5b80356133eb612f0682613a83565b8181528381019083850160608402850186018d101561340957600080fd5b60009450845b8481101561346b576060828f031215613426578586fd5b61342e613a08565b823561343981613d84565b81528288013588820152604083013561345181613d84565b60408201528452928601926060919091019060010161340f565b505080955050505050509295509295909350565b6000806000806080858703121561349557600080fd5b84356001600160401b03808211156134ac57600080fd5b6134b88883890161302f565b955060208701359150808211156134ce57600080fd5b506134db87828801612fc0565b9350506040850135915060608501356134f381613d84565b939692955090935050565b60006020828403121561351057600080fd5b5051919050565b6000815180845261352f816020860160208601613cea565b601f01601f19169290920160200192915050565b60008251613555818460208701613cea565b9190910192915050565b60008851613571818460208d01613cea565b91909101968752506bffffffffffffffffffffffff19606095861b81166020880152603487019490945291841b83166054860152606885015290911b166088820152609c01919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156136445781516001600160a01b03168452928401929084019060010161361f565b5050508381038285015284518082528583019183019060005b81811015612f535783518352928401929184019160010161365d565b6001600160e01b031991909116815260200190565b602081526000611f316020830184613517565b60006101008083526136b58184018c613517565b602084019a909a5250506001600160a01b0396871660408201526060810195909552608085019390935290841660a084015290921660c082015260e00152919050565b600061012080835261370c8184018d613517565b905060208b81850152604060018060a01b03808d168287015260608c818801528b6080880152818b1660a0880152818a1660c08801528860e08801528685036101008801528488518087528587019150858a01965060005b8181101561379557875180518616845287810151888501528601518516868401529686019691830191600101613764565b50508096505050505050509a9950505050505050505050565b602080825260179082015276496e76616c6964206275796572207369676e617475726560481b604082015260600190565b6020808252601190820152701555525108185b1c9958591e481d5cd959607a1b604082015260600190565b6020808252601390820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604082015260600190565b6020808252603a908201527f746f6b656e436f6e747261637420646f6573206e6f7420737570706f7274204560408201527f5243373231206f72204552433131353520696e74657266616365000000000000606082015260800190565b6020808252602a908201527f6d73672e73656e6465722073686f756c64206265207468652077686974656c6960408201526939ba32b210313abcb2b960b11b606082015260800190565b60208082526028908201527f73686f756c642070726f76696465206f6e6c7920737570706f727465642063756040820152677272656e6369657360c01b606082015260800190565b602080825260189082015277496e76616c69642073656c6c6572207369676e617475726560401b604082015260600190565b6020808252601c908201527f696e73756666696369656e7420746f6b656e20616c6c6f77616e636500000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526022908201527f73686f756c642062652074686520737570706f727465642063757272656e6369604082015261657360f01b606082015260800190565b604051606081016001600160401b0381118282101715613a2a57613a2a613d6e565b60405290565b60405161018081016001600160401b0381118282101715613a2a57613a2a613d6e565b604051601f8201601f191681016001600160401b0381118282101715613a7b57613a7b613d6e565b604052919050565b60006001600160401b03821115613a9c57613a9c613d6e565b5060051b60200190565b600080821280156001600160ff1b0384900385131615613ac857613ac8613d16565b600160ff1b8390038412811615613ae157613ae1613d16565b50500190565b60008219821115613afa57613afa613d16565b500190565b600082613b0e57613b0e613d2c565b600160ff1b821460001984141615613b2857613b28613d16565b500590565b600082613b3c57613b3c613d2c565b500490565b600181815b80851115613b7c578160001904821115613b6257613b62613d16565b80851615613b6f57918102915b93841c9390800290613b46565b509250929050565b6000611f3160ff841683600082613b9d575060016128b4565b81613baa575060006128b4565b8160018114613bc05760028114613bca57613be6565b60019150506128b4565b60ff841115613bdb57613bdb613d16565b50506001821b6128b4565b5060208310610133831016604e8410600b8410161715613c09575081810a6128b4565b613c138383613b41565b8060001904821115613c2757613c27613d16565b029392505050565b60006001600160ff1b0381841382841380821686840486111615613c5557613c55613d16565b600160ff1b6000871282811687830589121615613c7457613c74613d16565b60008712925087820587128484161615613c9057613c90613d16565b87850587128184161615613ca657613ca6613d16565b505050929093029392505050565b6000816000190483118215151615613cce57613cce613d16565b500290565b600082821015613ce557613ce5613d16565b500390565b60005b83811015613d05578181015183820152602001613ced565b8381111561294d5750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461289157600080fdfea2646970667358221220b902e2f3a391eea3c236f3c34cd1e6326e5141b4b0adb279a667274bc85469ae64736f6c63430008070033",deployedBytecode:"0x60806040526004361061009a5760003560e01c80635bf8633a116100615780635bf8633a146101425780638da5cb5b14610162578063cd70505514610182578063cdd78cfc14610195578063daa17f49146101b9578063e0abca0b146101d957005b806313b3f558146100a357806317fcb39b146100b657806336de9742146100ec5780633ccfd60b1461011a578063526a57251461012f57005b366100a157005b005b6100a16100b136600461347f565b6101f9565b3480156100c257600080fd5b506003546100d6906001600160a01b031681565b6040516100e391906135bb565b60405180910390f35b3480156100f857600080fd5b5061010c610107366004613157565b610a5a565b6040516100e3929190613602565b34801561012657600080fd5b506100a1610f29565b6100a161013d3660046132af565b610fec565b34801561014e57600080fd5b506002546100d6906001600160a01b031681565b34801561016e57600080fd5b506001546100d6906001600160a01b031681565b6100a1610190366004613326565b611703565b3480156101a157600080fd5b506101ab60055481565b6040519081526020016100e3565b3480156101c557600080fd5b506004546100d6906001600160a01b031681565b3480156101e557600080fd5b506006546100d6906001600160a01b031681565b600260005414156102255760405162461bcd60e51b815260040161021c9061398f565b60405180910390fd5b600260005560408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a790610263906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561027b57600080fd5b505afa15801561028f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b39190613257565b80610342575060408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906102f290636cdb3d1360e11b90600401613679565b60206040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103429190613257565b61035e5760405162461bcd60e51b815260040161021c90613837565b60408085015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a79061039790636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156103af57600080fd5b505afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613257565b156104df57600084604001516001600160a01b031662fdd58e3387602001516040518363ffffffff1660e01b81526004016104239291906135cf565b60206040518083038186803b15801561043b57600080fd5b505afa15801561044f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047391906134fe565b90508085606001511115801561048d575060008560600151115b6104d95760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000604482015260640161021c565b5061053b565b60808401516001600160a01b0316331461053b5760405162461bcd60e51b815260206004820181905260248201527f6d73672e73656e6465722073686f756c6420626520746f6b656e206f776e6572604482015260640161021c565b4282101561057f5760405162461bcd60e51b81526020600482015260116024820152701bd999995c881a185cc8195e1c1a5c9959607a1b604482015260640161021c565b60035460c08501516001600160a01b039081169116146105b15760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b03828116911614806105d457506001600160a01b038116155b6105f05760405162461bcd60e51b815260040161021c906139c6565b60035460c08501516001600160a01b03908116911614801561061f57506003546001600160a01b038281169116145b8061063c575060035460c08501516001600160a01b039081169116145b156107b3578360e001518460a001516106559190613ae7565b60c08501516101608601516040516370a0823160e01b81526001600160a01b03909216916370a082319161068b916004016135bb565b60206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db91906134fe565b10156106f95760405162461bcd60e51b815260040161021c9061380a565b8360e001518460a0015161070d9190613ae7565b60c0850151610160860151604051636eb1769f60e11b81526001600160a01b039092169163dd62ed3e916107459130906004016135e8565b60206040518083038186803b15801561075d57600080fd5b505afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079591906134fe565b10156107b35760405162461bcd60e51b815260040161021c90613958565b6101008401516001600160a01b031615806107e957508361016001516001600160a01b03168461010001516001600160a01b0316145b6108055760405162461bcd60e51b815260040161021c90613894565b6108158484866101600151611e72565b6108315760405162461bcd60e51b815260040161021c906137ae565b835160405160079161084291613543565b9081526040519081900360200190205460ff16156108725760405162461bcd60e51b815260040161021c906137df565b6001600785600001516040516108889190613543565b908152604051908190036020019020805491151560ff19909216919091179055610120840151156108cd576108cd8460a0015185610120015183876101400151611f38565b60a08401516004546001600160a01b0316158015906108f0575060008560e00151115b1561091e5761016085015160045460e087015160c088015161091e93926001600160a01b03169186916120ad565b6004546000906001600160a01b03161580159061093d57506000600554115b15610995576064600554836109529190613cb4565b61095c9190613b2d565b90506109688183613cd3565b9150610995866101600151600460009054906101000a90046001600160a01b031685848a60c001516120ad565b6109b48660400151876020015184868a61016001518b60c00151612330565b91506109cc8661016001513385858a60c001516120ad565b6109d586612483565b6040808701516020880151885160608a01516101608b015160a08c015160e08d0151600454975133986001600160a01b03988916987fd5ecea71962fa1e78a663464eb59cb2b617905def1b3ec201d773fedc528221a97610a4597909690959094909390928f9216908d906136a1565b60405180910390a45050600160005550505050565b6040516301ffc9a760e01b815260609081906001600160a01b038616906301ffc9a790610a9290635d9dd7eb60e11b90600401613679565b60206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613257565b15610b6e57604051635d9dd7eb60e11b8152600481018590526001600160a01b0386169063bb3bafd6906024015b60006040518083038186803b158015610b2857600080fd5b505afa158015610b3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b6491908101906131c0565b9092509050610f21565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610ba190632dde656160e21b90600401613679565b60206040518083038186803b158015610bb957600080fd5b505afa158015610bcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf19190613257565b15610cf85760405163b9c4d9fb60e01b8152600481018590526001600160a01b0386169063b9c4d9fb9060240160006040518083038186803b158015610c3657600080fd5b505afa158015610c4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c72919081019061318c565b604051630ebd4c7f60e01b8152600481018690529092506001600160a01b03861690630ebd4c7f9060240160006040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf19190810190613223565b9050610f21565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610d2b906335681b5360e21b90600401613679565b60206040518083038186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190613257565b15610dad576040516335681b5360e21b8152600481018590526001600160a01b0386169063d5a06d4c90602401610b10565b6040516301ffc9a760e01b81526001600160a01b038616906301ffc9a790610de09063152a902d60e11b90600401613679565b60206040518083038186803b158015610df857600080fd5b505afa158015610e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e309190613257565b15610f215760405163152a902d60e11b8152600481018590526024810184905260009081906001600160a01b03881690632a55205a90604401604080518083038186803b158015610e8057600080fd5b505afa158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190613129565b915091508184600081518110610ed057610ed0613d58565b6001600160a01b039092166020928302919091019091015284610ef582612710613cb4565b610eff9190613b2d565b83600081518110610f1257610f12613d58565b60200260200101818152505050505b935093915050565b6001546001600160a01b03163314610f4057600080fd5b604080516000808252602082019283905291339182914791610f6191613543565b60006040518083038185875af1925050503d8060008114610f9e576040519150601f19603f3d011682016040523d82523d6000602084013e610fa3565b606091505b50508092505081610fe85760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161021c565b5050565b6002600054141561100f5760405162461bcd60e51b815260040161021c9061398f565b600260005560408084015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a79061104d906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561106557600080fd5b505afa158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190613257565b8061112c575060408084015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906110dc90636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c9190613257565b6111485760405162461bcd60e51b815260040161021c90613837565b6101608301516001600160a01b031633146111a55760405162461bcd60e51b815260206004820152601e60248201527f6d73672e73656e6465722073686f756c64206265207468652062757965720000604482015260640161021c565b6101008301516001600160a01b031615806111cd57506101008301516001600160a01b031633145b6111e95760405162461bcd60e51b815260040161021c90613894565b60035460c08401516001600160a01b0390811691161480611215575060c08301516001600160a01b0316155b6112315760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b038281169116148061125457506001600160a01b038116155b6112705760405162461bcd60e51b815260040161021c906139c6565b60c08301516001600160a01b031615801561129257506001600160a01b038116155b806112a457506001600160a01b038116155b156112e1578260e001518360a001516112bd9190613ae7565b3410156112dc5760405162461bcd60e51b815260040161021c9061380a565b611495565b60035460c08401516001600160a01b03908116911614801561131057506003546001600160a01b038281169116145b8061132857506003546001600160a01b038281169116145b15611495578260e001518360a001516113419190613ae7565b6101608401516040516370a0823160e01b81526001600160a01b038416916370a082319161137291906004016135bb565b60206040518083038186803b15801561138a57600080fd5b505afa15801561139e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c291906134fe565b10156113e05760405162461bcd60e51b815260040161021c9061380a565b8260e001518360a001516113f49190613ae7565b610160840151604051636eb1769f60e11b81526001600160a01b0384169163dd62ed3e91611427919030906004016135e8565b60206040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147791906134fe565b10156114955760405162461bcd60e51b815260040161021c90613958565b6114a483838560800151611e72565b6114c05760405162461bcd60e51b815260040161021c90613926565b82516040516007916114d191613543565b9081526040519081900360200190205460ff16156115015760405162461bcd60e51b815260040161021c906137df565b6001600784600001516040516115179190613543565b908152604051908190036020019020805491151560ff199092169190911790556101208301511561155c5761155c8360a0015184610120015183866101400151611f38565b60a08301516004546001600160a01b03161580159061157f575060008460e00151115b156115ad5761016084015160045460c086015160e08701516115ad93926001600160a01b03169190866120ad565b6004546000906001600160a01b0316158015906115cc57506000600554115b1561161f576064600554836115e19190613cb4565b6115eb9190613b2d565b90506115f78183613cd3565b61016086015160045460c088015192945061161f926001600160a01b039091169084876120ad565b61163e85604001518660200151848860c0015189610160015188612330565b915061165a85610160015186608001518760c0015185876120ad565b61166385612483565b84608001516001600160a01b031685604001516001600160a01b031686602001517fd1787f9e7db09f026ae23bda01cb702ad3b51548917fd19e17a15caa0970ea4c886000015189606001518a61016001518b60a001518c60e001518d60c00151600460009054906101000a90046001600160a01b03168b6040516116ef9897969594939291906136a1565b60405180910390a450506001600055505050565b600260005414156117265760405162461bcd60e51b815260040161021c9061398f565b600260005560408086015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a790611764906380ac58cd60e01b90600401613679565b60206040518083038186803b15801561177c57600080fd5b505afa158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b49190613257565b80611843575060408086015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906117f390636cdb3d1360e11b90600401613679565b60206040518083038186803b15801561180b57600080fd5b505afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190613257565b61185f5760405162461bcd60e51b815260040161021c90613837565b6101608501516001600160a01b031633148061188557506004546001600160a01b031633145b6118e85760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79204275796572206f72207468652041646d696e2063616e2063616c6c60448201526d103a3434b990333ab731ba34b7b760911b606482015260840161021c565b6101008501516001600160a01b0316158061191057506101008501516001600160a01b031633145b61192c5760405162461bcd60e51b815260040161021c90613894565b60035460c08601516001600160a01b0390811691161480611958575060c08501516001600160a01b0316155b6119745760405162461bcd60e51b815260040161021c906138de565b6003546001600160a01b038381169116148061199757506001600160a01b038216155b6119b35760405162461bcd60e51b815260040161021c906139c6565b60c08501516001600160a01b03161580156119d557506001600160a01b038216155b806119e757506001600160a01b038216155b15611a24578460e001518560a00151611a009190613ae7565b341015611a1f5760405162461bcd60e51b815260040161021c9061380a565b611bd8565b60035460c08601516001600160a01b039081169116148015611a5357506003546001600160a01b038381169116145b80611a6b57506003546001600160a01b038381169116145b15611bd8578460e001518560a00151611a849190613ae7565b6101608601516040516370a0823160e01b81526001600160a01b038516916370a0823191611ab591906004016135bb565b60206040518083038186803b158015611acd57600080fd5b505afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0591906134fe565b1015611b235760405162461bcd60e51b815260040161021c9061380a565b8460e001518560a00151611b379190613ae7565b610160860151604051636eb1769f60e11b81526001600160a01b0385169163dd62ed3e91611b6a919030906004016135e8565b60206040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906134fe565b1015611bd85760405162461bcd60e51b815260040161021c90613958565b611be785858760800151611e72565b611c035760405162461bcd60e51b815260040161021c90613926565b611c138584876101600151611e72565b611c2f5760405162461bcd60e51b815260040161021c906137ae565b8451604051600791611c4091613543565b9081526040519081900360200190205460ff1615611c705760405162461bcd60e51b815260040161021c906137df565b600160078660000151604051611c869190613543565b908152604051908190036020019020805491151560ff1990921691909117905561012085015115611ccb57611ccb8560a0015186610120015184886101400151611f38565b60a08501516004546001600160a01b031615801590611cee575060008660e00151115b15611d1c5761016086015160045460c088015160e0890151611d1c93926001600160a01b03169190876120ad565b6004546000906001600160a01b031615801590611d3b57506000600554115b15611d8e57606460055483611d509190613cb4565b611d5a9190613b2d565b9050611d668183613cd3565b61016088015160045460c08a0151929450611d8e926001600160a01b039091169084886120ad565b611dad87604001518860200151848a60c001518b610160015189612330565b9150611dc987610160015188608001518960c0015185886120ad565b611dd287612483565b86608001516001600160a01b031687604001516001600160a01b031688602001517f4618206cb49a2f19c42c02ca7be3762babd6940e867e343ca82380c1f0251f388a600001518b606001518c61016001518d60a001518e60e001518c600460009054906101000a90046001600160a01b03168b8e604051611e5c999897969594939291906136f8565b60405180910390a4505060016000555050505050565b6000816001600160a01b0316611f2484611f1e8760000151886020015189604001518a606001518b608001518c60a001518d60c00151604051602001611ebe979695949392919061355f565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b90612894565b6001600160a01b03161490505b9392505050565b6006546040516302c68be360e31b815260009182916001600160a01b03909116906316345f1890611f6d9087906004016135bb565b6040805180830381600087803b158015611f8657600080fd5b505af1158015611f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbe9190613279565b9092509050670de0b6b3a7640000611fd782600a613b84565b611fe19190613c2f565b611feb8784613c2f565b611ff59190613aff565b60648461200a670de0b6b3a764000089613aff565b6120149190613c2f565b61201e9190613aff565b612030670de0b6b3a764000088613aff565b61203a9190613aa6565b12156120a55760405162461bcd60e51b815260206004820152603460248201527f71756f74655072696365207769746820736c697070616765206973206c657373604482015273207468616e20746865206669786564507269636560601b606482015260840161021c565b505050505050565b60006001600160a01b0384161580156120cd57506001600160a01b038216155b156121a7576001600160a01b0385168360005b6040519080825280601f01601f19166020018201604052801561210a576020820181803683370190505b506040516121189190613543565b60006040518083038185875af1925050503d8060008114612155576040519150601f19603f3d011682016040523d82523d6000602084013e61215a565b606091505b505080915050806121a25760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd858dd1a5bdb8819985a5b195960721b604482015260640161021c565b6120a5565b6003546001600160a01b0385811691161480156121cb57506001600160a01b038216155b1561224f57600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561222057600080fd5b505af1158015612234573d6000803e3d6000fd5b506121a2935050506001600160a01b038616905086856128ba565b6001600160a01b03841615801561227357506003546001600160a01b038381169116145b1561230157600354612290906001600160a01b0316873086612915565b600354604051632e1a7d4d60e01b8152600481018590526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156122d657600080fd5b505af11580156122ea573d6000803e3d6000fd5b5050506001600160a01b03861690508360006120e0565b816001600160a01b0316846001600160a01b031614156120a5576120a56001600160a01b038516878786612915565b6000848180806123418b8b86610a5a565b815191935091508061235a578995505050505050612479565b60005b8181101561247057600084828151811061237957612379613d58565b602002602001015190506127108c85848151811061239957612399613d58565b60200260200101516123ab9190613cb4565b6123b59190613b2d565b9550858710156123f35760405162461bcd60e51b81526020600482015260096024820152681a5b9cdbdb1d995b9d60ba1b604482015260640161021c565b6124008a828d898d6120ad565b7f866e6ef8682ddf5f1025e64dfdb45527077f7be70fa9ef680b7ffd8cf4ab9c508e8e838960405161245a94939291906001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b60405180910390a150948490039460010161235d565b50939450505050505b9695505050505050565b60408082015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906124bc906380ac58cd60e01b90600401613679565b60206040518083038186803b1580156124d457600080fd5b505afa1580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c9190613257565b156126745780608001516001600160a01b031681604001516001600160a01b0316636352211e83602001516040518263ffffffff1660e01b815260040161255591815260200190565b60206040518083038186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a5919061310c565b6001600160a01b0316146125f45760405162461bcd60e51b815260206004820152601660248201527536b0b5b2b91034b9903737ba103a34329037bbb732b960511b604482015260640161021c565b604080820151608083015161016084015160208501519351632142170760e11b81526001600160a01b0392831660048201529082166024820152604481019390935216906342842e0e90606401600060405180830381600087803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b505050505b60408082015190516301ffc9a760e01b81526001600160a01b03909116906301ffc9a7906126ad90636cdb3d1360e11b90600401613679565b60206040518083038186803b1580156126c557600080fd5b505afa1580156126d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fd9190613257565b1561289157600081604001516001600160a01b031662fdd58e836080015184602001516040518363ffffffff1660e01b815260040161273d9291906135cf565b60206040518083038186803b15801561275557600080fd5b505afa158015612769573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278d91906134fe565b9050808260600151111580156127a7575060008260600151115b6127f35760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696365696e7420746f6b656e2062616c616e6365000000000000604482015260640161021c565b6040808301516080840151610160850151602086015160608701519451637921219560e11b81526001600160a01b03938416600482015291831660248301526044820152606481019390935260a06084840152600260a484015261060f60f31b60c4840152169063f242432a9060e401600060405180830381600087803b15801561287d57600080fd5b505af11580156120a5573d6000803e3d6000fd5b50565b60008060006128a38585612953565b915091506128b0816129c3565b5090505b92915050565b6129108363a9059cbb60e01b84846040516024016128d99291906135cf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612b79565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261294d9085906323b872dd60e01b906084016128d9565b50505050565b60008082516041141561298a5760208301516040840151606085015160001a61297e87828585612c4b565b945094505050506129bc565b8251604014156129b457602083015160408401516129a9868383612d2e565b9350935050506129bc565b506000905060025b9250929050565b60008160048111156129d7576129d7613d42565b14156129e05750565b60018160048111156129f4576129f4613d42565b1415612a3d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161021c565b6002816004811115612a5157612a51613d42565b1415612a9f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161021c565b6003816004811115612ab357612ab3613d42565b1415612b0c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161021c565b6004816004811115612b2057612b20613d42565b14156128915760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161021c565b6000612bce826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612d5d9092919063ffffffff16565b8051909150156129105780806020019051810190612bec9190613257565b6129105760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161021c565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612c785750600090506003612d25565b8460ff16601b14158015612c9057508460ff16601c14155b15612ca15750600090506004612d25565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612cf5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612d1e57600060019250925050612d25565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01612d4f87828885612c4b565b935093505050935093915050565b6060612d6c8484600085612d74565b949350505050565b606082471015612dd55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161021c565b843b612e235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161021c565b600080866001600160a01b03168587604051612e3f9190613543565b60006040518083038185875af1925050503d8060008114612e7c576040519150601f19603f3d011682016040523d82523d6000602084013e612e81565b606091505b5091509150612e91828286612e9c565b979650505050505050565b60608315612eab575081611f31565b825115612ebb5782518084602001fd5b8160405162461bcd60e51b815260040161021c919061368e565b8035612ee081613d84565b919050565b600082601f830112612ef657600080fd5b81516020612f0b612f0683613a83565b613a53565b80838252828201915082860187848660051b8901011115612f2b57600080fd5b60005b85811015612f53578151612f4181613d84565b84529284019290840190600101612f2e565b5090979650505050505050565b600082601f830112612f7157600080fd5b81516020612f81612f0683613a83565b80838252828201915082860187848660051b8901011115612fa157600080fd5b60005b85811015612f5357815184529284019290840190600101612fa4565b600082601f830112612fd157600080fd5b81356001600160401b03811115612fea57612fea613d6e565b612ffd601f8201601f1916602001613a53565b81815284602083860101111561301257600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180828403121561304257600080fd5b61304a613a30565b905081356001600160401b0381111561306257600080fd5b61306e84828501612fc0565b8252506020820135602082015261308760408301612ed5565b6040820152606082013560608201526130a260808301612ed5565b608082015260a082013560a08201526130bd60c08301612ed5565b60c082015260e082013560e08201526101006130da818401612ed5565b9082015261012082810135908201526101408083013590820152610160613102818401612ed5565b9082015292915050565b60006020828403121561311e57600080fd5b8151611f3181613d84565b6000806040838503121561313c57600080fd5b825161314781613d84565b6020939093015192949293505050565b60008060006060848603121561316c57600080fd5b833561317781613d84565b95602085013595506040909401359392505050565b60006020828403121561319e57600080fd5b81516001600160401b038111156131b457600080fd5b612d6c84828501612ee5565b600080604083850312156131d357600080fd5b82516001600160401b03808211156131ea57600080fd5b6131f686838701612ee5565b9350602085015191508082111561320c57600080fd5b5061321985828601612f60565b9150509250929050565b60006020828403121561323557600080fd5b81516001600160401b0381111561324b57600080fd5b612d6c84828501612f60565b60006020828403121561326957600080fd5b81518015158114611f3157600080fd5b6000806040838503121561328c57600080fd5b82519150602083015160ff811681146132a457600080fd5b809150509250929050565b6000806000606084860312156132c457600080fd5b83356001600160401b03808211156132db57600080fd5b6132e78783880161302f565b945060208601359150808211156132fd57600080fd5b5061330a86828701612fc0565b925050604084013561331b81613d84565b809150509250925092565b600080600080600060a0868803121561333e57600080fd5b85356001600160401b038082111561335557600080fd5b61336189838a0161302f565b965060209150818801358181111561337857600080fd5b6133848a828b01612fc0565b96505060408801358181111561339957600080fd5b6133a58a828b01612fc0565b95505060608801356133b681613d84565b93506080880135818111156133ca57600080fd5b88019050601f810189136133dd57600080fd5b80356133eb612f0682613a83565b8181528381019083850160608402850186018d101561340957600080fd5b60009450845b8481101561346b576060828f031215613426578586fd5b61342e613a08565b823561343981613d84565b81528288013588820152604083013561345181613d84565b60408201528452928601926060919091019060010161340f565b505080955050505050509295509295909350565b6000806000806080858703121561349557600080fd5b84356001600160401b03808211156134ac57600080fd5b6134b88883890161302f565b955060208701359150808211156134ce57600080fd5b506134db87828801612fc0565b9350506040850135915060608501356134f381613d84565b939692955090935050565b60006020828403121561351057600080fd5b5051919050565b6000815180845261352f816020860160208601613cea565b601f01601f19169290920160200192915050565b60008251613555818460208701613cea565b9190910192915050565b60008851613571818460208d01613cea565b91909101968752506bffffffffffffffffffffffff19606095861b81166020880152603487019490945291841b83166054860152606885015290911b166088820152609c01919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156136445781516001600160a01b03168452928401929084019060010161361f565b5050508381038285015284518082528583019183019060005b81811015612f535783518352928401929184019160010161365d565b6001600160e01b031991909116815260200190565b602081526000611f316020830184613517565b60006101008083526136b58184018c613517565b602084019a909a5250506001600160a01b0396871660408201526060810195909552608085019390935290841660a084015290921660c082015260e00152919050565b600061012080835261370c8184018d613517565b905060208b81850152604060018060a01b03808d168287015260608c818801528b6080880152818b1660a0880152818a1660c08801528860e08801528685036101008801528488518087528587019150858a01965060005b8181101561379557875180518616845287810151888501528601518516868401529686019691830191600101613764565b50508096505050505050509a9950505050505050505050565b602080825260179082015276496e76616c6964206275796572207369676e617475726560481b604082015260600190565b6020808252601190820152701555525108185b1c9958591e481d5cd959607a1b604082015260600190565b6020808252601390820152721a5b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604082015260600190565b6020808252603a908201527f746f6b656e436f6e747261637420646f6573206e6f7420737570706f7274204560408201527f5243373231206f72204552433131353520696e74657266616365000000000000606082015260800190565b6020808252602a908201527f6d73672e73656e6465722073686f756c64206265207468652077686974656c6960408201526939ba32b210313abcb2b960b11b606082015260800190565b60208082526028908201527f73686f756c642070726f76696465206f6e6c7920737570706f727465642063756040820152677272656e6369657360c01b606082015260800190565b602080825260189082015277496e76616c69642073656c6c6572207369676e617475726560401b604082015260600190565b6020808252601c908201527f696e73756666696369656e7420746f6b656e20616c6c6f77616e636500000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526022908201527f73686f756c642062652074686520737570706f727465642063757272656e6369604082015261657360f01b606082015260800190565b604051606081016001600160401b0381118282101715613a2a57613a2a613d6e565b60405290565b60405161018081016001600160401b0381118282101715613a2a57613a2a613d6e565b604051601f8201601f191681016001600160401b0381118282101715613a7b57613a7b613d6e565b604052919050565b60006001600160401b03821115613a9c57613a9c613d6e565b5060051b60200190565b600080821280156001600160ff1b0384900385131615613ac857613ac8613d16565b600160ff1b8390038412811615613ae157613ae1613d16565b50500190565b60008219821115613afa57613afa613d16565b500190565b600082613b0e57613b0e613d2c565b600160ff1b821460001984141615613b2857613b28613d16565b500590565b600082613b3c57613b3c613d2c565b500490565b600181815b80851115613b7c578160001904821115613b6257613b62613d16565b80851615613b6f57918102915b93841c9390800290613b46565b509250929050565b6000611f3160ff841683600082613b9d575060016128b4565b81613baa575060006128b4565b8160018114613bc05760028114613bca57613be6565b60019150506128b4565b60ff841115613bdb57613bdb613d16565b50506001821b6128b4565b5060208310610133831016604e8410600b8410161715613c09575081810a6128b4565b613c138383613b41565b8060001904821115613c2757613c27613d16565b029392505050565b60006001600160ff1b0381841382841380821686840486111615613c5557613c55613d16565b600160ff1b6000871282811687830589121615613c7457613c74613d16565b60008712925087820587128484161615613c9057613c90613d16565b87850587128184161615613ca657613ca6613d16565b505050929093029392505050565b6000816000190483118215151615613cce57613cce613d16565b500290565b600082821015613ce557613ce5613d16565b500390565b60005b83811015613d05578181015183820152602001613ced565b8381111561294d5750506000910152565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461289157600080fdfea2646970667358221220b902e2f3a391eea3c236f3c34cd1e6326e5141b4b0adb279a667274bc85469ae64736f6c63430008070033",linkReferences:{},deployedLinkReferences:{}};